Nhibernate ArgumentNullException is unhandling 值不能为空 参数名称:流

本文关键字:参数 is ArgumentNullException unhandling 不能 Nhibernate | 更新日期: 2023-09-27 18:31:15

我正在使用MySql在NHibernate中尝试一个简单的项目,但是我遇到了这个异常。请帮忙。这是代码

class Cat
{

    public string id { get; set; }
    public string name { get; set; }
    public string sex { get; set; }
    public decimal weight { get; set; }
}

这是我的 Cat.hbm.xml 文件

<property name="name" type="String">
  <column name="name" length="25" sql-type="varchar" not-null="true"/>
</property>
<property name="sex" column="sex" not-null="true" update="false"/>
<property name="weight" column="weight" not-null="true"/>

应用程序配置文件

    <?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/>
  </configSections>
  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
      <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=mohit;User ID=root;Password=root</property>
      <mapping assembly="Cats"/>
    </session-factory>
  </hibernate-configuration>
</configuration>

这是主要程序.cs

class Program
{
static void Main(string[] args)
{
    Configuration cfg = new Configuration();
    cfg.Configure();
    ISessionFactory sessionFactory = cfg.BuildSessionFactory();
    ISession session = sessionFactory.OpenSession();
    ITransaction tx1 = session.BeginTransaction();
    Cat c1 = new Cat();
    c1.id = "cat1";
    c1.name = "Fluffy";
    c1.sex = "f";
    c1.weight = new Decimal(3.2);
    var c2 = new Cat();
    c2.id = "cat2";
    c2.name = "Mittens";
    c2.sex = "m";
    c2.weight = new Decimal(4.3);
    session.Save(c1);
    session.Save(c2);
    tx1.Commit();
    Console.WriteLine("successful");
 ITransaction tx2 = session.BeginTransaction();
IList<Cat> cats = session.CreateQuery("FROM cats").List<Cat>();
foreach (Cat c in cats)
{
    Console.WriteLine(c.name);
}
tx2.Commit();
session.Close();
}

请帮忙 我是Nhibernate的新手,我对此感到震惊。

Nhibernate ArgumentNullException is unhandling 值不能为空 参数名称:流

似乎 MySqlConnector 中存在一个错误...

在 web.config 中添加该行

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

您可以在以下链接中找到一些详细的解决方案

Fluent Nhibernate:无法创建与MySQL的数据库连接

冬眠论坛

经过3天的挖掘,终于找到了解决方案。

将 NHibernate 属性 hbm2ddl.keywords 设置为 None。像下面一样this._NHConfig.SetProperty("hbm2ddl.keywords", "none");

您也可以通过web.config进行,如上面的答案。