代码之家  ›  专栏  ›  技术社区  ›  Grofit

.Net+Nhibernate+Mysql Connector 6.3.5=值不能为空错误

  •  0
  • Grofit  · 技术社区  · 14 年前

    安装程序:System.ArgumentNullException:值不能为空。

    参数名称:stream

    以下是配置文件:

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

    **编辑**

    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 回复  |  直到 14 年前
        1
  •  1
  •   Buhake Sindi Tesnep    14 年前

    在网上多看了一点之后,我在Nhibernate论坛上发现了一个单独的帖子,它已经解决了我的问题,不知道为什么关键词会有这样的问题,但我不会去争论它。

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

    把它放在会话工厂中的配置文件中,所有这些都能很好地发挥作用。

        2
  •  0
  •   Stefan Steinegger    14 年前

    就在这里猜。参数名“stream”假定某些内容被反序列化。如果所提供的映射程序集不存在,则可能为空。只需尝试删除映射元素,看看它是否不会导致相同的错误。

    如果是其他问题,请查看堆栈跟踪或调试到NH代码中,以找到错误的来源。