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

时间:2010-11-01 11:03:32

标签: .net nhibernate mysql-connector

我有一个简单的集成完整性测试来证明我的映射正在工作,最初我使用的是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连接器问题的信息,但仅限于6.1之前的版本,并且我找不到解决方案,只是有人说更新。不过我最新版本。任何帮助都会很棒!

**编辑**

这是堆栈跟踪,它有助于诊断潜在问题:

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 个答案:

答案 0 :(得分:1)

在网上浏览了一下之后,我在Nhibernate论坛上发现了一个已修复我的问题的单独帖子,不老实地知道为什么关键字是这样的问题,但我不打算与它争论。

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

将它放在会话工厂中的配置文件中,所有这一切都很好地协同工作。

答案 1 :(得分:0)

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

如果是其他内容,请查看堆栈跟踪或调试NH代码以找到错误发生的位置。