在Nhibernate中给命名参数赋值的问题

本文关键字:参数 赋值 问题 Nhibernate | 更新日期: 2023-09-27 18:15:45

我对Nhibernate比较陌生。我正在尝试更新一个存储过程。我在命名查询中得到了下面的部分。

<sql-query name="TestUpdate">
exec UpdateTest :DateField :StringField :IntField :BoolField :NullIntField
</sql-query>

Testupdate是一个存储过程,其中包含一个简单的update语句。我正在使用以下代码行更新参数。

        int? testdata = null;
        IQuery query = Session.GetNamedQuery("TestUpdate");
        query.SetDateTime("DateField", DateTime.Now.AddDays(10));
        query.SetString("StringField", "UK");
        query.SetInt32("IntField", 100);
        query.SetBoolean("BoolField", true);
        if(testdata.HasValue)
            query.SetInt32("NullIntField", testdata.GetValueOrDefault());
        else
        {
            query.SetParameter("NullIntField", null,NHibernateUtil.Int32);    
        }
        var cmd  = new SqlCommand(query.QueryString, (SqlConnection)Session.Connection);
        cmd.ExecuteNonQuery();

然而,当我看query.QueryString的值时,它仍然指向相同的值(exec UpdateTest :DateField :StringField :IntField :BoolField :NullIntField)。似乎命名参数没有被赋值。我该怎么做才能解决这个问题?

我正在使用sharparchitecure,它使用流利的nhibernate来查询数据。

请注意,我在论坛上搜索了这个特定的问题,我找不到一个例子。

我知道这个问题可能是微不足道的,但是到目前为止我还没有找到解决办法。

在Nhibernate中给命名参数赋值的问题

在NHibernate中很少支持存储过程。欲了解更多信息,请查看NH文档:http://nhibernate.info/doc/nh/en/index.html#querysql-limits-storedprocedures

也许这对你有帮助:http://ayende.com/blog/1692/using-nhibernate-with-stored-procedures