我想我在這裏之後是如何做到這一點的快速示例。我有流利的nhibernate工作正常。我可以創建沒有問題的新記錄,並在現有記錄中讀取沒有問題。我遇到的問題是在asp.net用戶會話中,以及我如何處理這個事實,即我希望在頁面加載之間保持這一點,並且我也想偶爾將它寫入數據庫。NHibernate - 如何處理用戶會話
我試圖讓工作流程是這樣的:
- 用戶登錄
- NHibernate的獲取用戶記錄
- 用戶記錄在asp.net會話釀
- NHibernate的會話(我認爲)結束
- 應用顯示「添加地址」頁面的鏈接
- 用戶轉到「添加地址」頁面
- 用戶輸入的詳細地址
- 用戶點擊「提交」
- 地址添加到用戶對象
- 用戶對象寫入數據庫
當我嘗試寫用戶對象(完整的新地址)回到數據庫,我得到一個錯誤,告訴我用戶對象已經與現有會話相關聯。下面是我用來讓用戶退出asp.net會話的代碼,添加地址並將其寫回數據庫。它只是在它點擊的地方.SaveOrUpdate事情出錯了,地址被完美地添加到對象。
void AddAddress_Click(object sender, EventArgs e)
{
var session = Global.SessionFactory.GetCurrentSession();
User user=(User)HttpContext.Current.Session["User"];
user.AddAddress(txtDescription.Text, txtLine1.Text,
txtLine2.Text, txtTown.Text, txtCounty.Text,
txtPostCode.Text, txtCountry.Text);
session.SaveOrUpdate(user);
session.Flush();
}
請忽略現在這可能是錯誤的101種方式,我很清楚它。我只想做一些工作來證明NHibernate是這個項目的前進方向,所以它現在會變得有點快速和骯髒。
如果您花費更多時間解釋您所做的事,並且不理解NHibernate會話生命週期如何在Web應用程序中工作,將會有所幫助。我不清楚爲什麼你認爲上面的代碼應該工作? – 2010-07-29 10:47:57