2011-11-23 34 views
0

我对Nhibernate比较新。我正在尝试更新存储过程。 我在命名查询中获得了以下部分。在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查询数据。

请注意,我已经搜索论坛这个特定的问题,我不能降落在一个例子。

我相信这个问题可能是微不足道的,但到目前为止我找不到解决方案。

任何帮助表示赞赏。

回答