2011-11-23 33 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查詢數據。

請注意,我已經搜索論壇這個特定的問題,我不能降落在一個例子。

我相信這個問題可能是微不足道的,但到目前爲止我找不到解決方案。

任何幫助表示讚賞。

回答