Pregunta

Tengo una sencilla prueba de sanidad de integración para demostrar que mis asignaciones están trabajando, que originalmente estaba usando un servidor de base de datos MsSQL, pero ahora han añadido soporte para MySQL (o al menos yo pensaba que tenía) pero seguir recibiendo la siguiente de error cuando cargo el archivo nhibernate.cfg.xml arriba.

Configuración: System.ArgumentNullException:. El valor no puede ser nulo

Nombre del parámetro: corriente

Aquí está el fichero de configuración:

<?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>

Los interwebs parecen tener algo de información sobre este ser un problema MySQL Connector, pero sólo en las versiones anteriores a 6.1, y no existen soluciones que encontré, la gente diciendo a la actualización. Sin embargo Im en la versión más reciente. Cualquier ayuda sería grande!

Editar ** **

Aquí está el seguimiento de la pila en caso que ayuda a diagnosticar el problema subyacente:

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
¿Fue útil?

Solución

Después de mirar alrededor de la una red poco más he encontrado un puesto solitario en los foros Nhibernate que se fija mi problema, no saben por qué sinceramente las palabras clave son un problema, pero im no va a discutir con él.

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

poner esto en su archivo de configuración dentro de su fábrica de sesión y todos los que todas las jugadas muy bien juntos.

Otros consejos

Sólo una suposición. El nombre de argumento "corriente" asume que algo se deserialized. Si el mapeo de montaje que están proporcionando no existe, puede ser nulo. Sólo trate de quitar el elemento de mapeo para ver si no se traduce en el mismo error.

Si se trata de algo más, echar un vistazo a la traza de la pila o de depuración en código NH encontrar el lugar donde entra el error.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top