.Net + Nhibernate + Mysql Connector 6.3.5 = Значение не может быть нулевой ошибкой - PullRequest
0 голосов
/ 01 ноября 2010

У меня есть простой тест для проверки работоспособности интеграции, чтобы доказать, что мои отображения работают, изначально я использовал сервер базы данных MsSQL, но теперь добавил поддержку MySQL (или, по крайней мере, мне так показалось), но я продолжаю получать следующееошибка всякий раз, когда я загружаю файл nhibernate.cfg.xml.

SetUp: System.ArgumentNullException: значение не может быть нулевым.

Имя параметра: поток

Вот файл конфигурации:

<?xml version="1.0" encoding="utf-8" ?>

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">

  <session-factory>

    <!-- Connection config -->
    <property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="dialect">NHibernate.Dialect.MySQLDialect</property>
    <property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
    <property name="connection.connection_string">Server=localhost;Database=xxxxx;User ID=root;</property>
    <property name="show_sql">true</property>

    <!-- Mapping config -->
    <mapping assembly="xxxxx.xxxxx"/>

  </session-factory>

</hibernate-configuration>

Кажется, что у веб-сетей есть некоторая информация о том, что это проблема MySQL Connector, но только в версиях до 6.1, и нетрешения, которые я нашел, просто люди говорят, чтобы обновить.Однако я на последней версии.Любая помощь будет отличной!

** Edit **

Вот пример стека трассировки, который помогает диагностировать основную проблему:

at System.IO.StreamReader..ctor(Stream stream, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize)
at System.IO.StreamReader..ctor(Stream stream)
at MySql.Data.MySqlClient.SchemaProvider.GetReservedWords()
at MySql.Data.MySqlClient.SchemaProvider.GetSchemaInternal(String collection, String[] restrictions)
at MySql.Data.MySqlClient.ISSchemaProvider.GetSchemaInternal(String collection, String[] restrictions)
at MySql.Data.MySqlClient.SchemaProvider.GetSchema(String collection, String[] restrictions)
at MySql.Data.MySqlClient.MySqlConnection.GetSchema(String collectionName, String[] restrictionValues)
at MySql.Data.MySqlClient.MySqlConnection.GetSchema(String collectionName)
at NHibernate.Dialect.Schema.AbstractDataBaseSchema.GetReservedWords()
at NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.GetReservedWords(Dialect dialect, IConnectionHelper connectionHelper)
at NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.Update(ISessionFactory sessionFactory)
at NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping mapping, Settings settings, EventListeners listeners)
at NHibernate.Cfg.Configuration.BuildSessionFactory()
at xxxxx.unittests.logic.mappings.MappingSanityTests.PreTestSetup() in C:\Documents and Settings\xxxxx\My Documents\Projects\Other\xxxxx\src\tests\xxxxx.integrationtests\logic\mappings\MappingSanityTests.cs:line 22

Ответы [ 2 ]

1 голос
/ 02 ноября 2010

Посмотрев немного в сети, я нашел на форумах Nhibernate одинокое сообщение, в котором исправлена ​​моя проблема, честно не знаю, почему ключевые слова являются такой проблемой, но я не собираюсь с этим спорить.

<property name="hbm2ddl.keywords">none</property>

Поместите это в свой конфигурационный файл на фабрике сессий, и все это прекрасно сочетается.

0 голосов
/ 01 ноября 2010

Просто угадай здесь. Имя аргумента «поток» предполагает, что что-то десериализовано. Если предоставленная вами сборочная карта не существует, она может быть нулевой. Просто попробуйте удалить элемент сопоставления, чтобы увидеть, не приводит ли он к той же ошибке.

Если это что-то еще, взгляните на трассировку стека или отладьте код NH, чтобы найти место, откуда возникла ошибка.

...