我对Nhibernate比较陌生。我正在尝试更新存储过程。 我在命名查询中得到了以下部分。
<sql-query name="TestUpdate">
exec UpdateTest :DateField :StringField :IntField :BoolField :NullIntField
</sql-query>
Testupdate是一个存储过程,其中包含一个简单的更新语句。我正在使用以下代码行更新参数。
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
)。似乎没有分配命名参数。我该怎么做才能解决这个问题?
我正在使用SharpArchitecutre,它使用流畅的nhibernate来查询数据。
请注意,我已经在论坛上搜索了这个特定的问题,我无法找到一个例子。
我确信这个问题可能很简单,但到目前为止我找不到解决办法。
感谢任何帮助。
答案 0 :(得分:0)
对NHibernate中的存储过程几乎没有支持。有关更多信息,请查看NH文档:http://nhibernate.info/doc/nh/en/index.html#querysql-limits-storedprocedures
也许这可以帮助你:http://ayende.com/blog/1692/using-nhibernate-with-stored-procedures