2011-08-24 57 views
0

我有一個ASP MVC應用程序在那裏我編輯的內容和張貼的變化通過Javascript回像這樣:NHibernate和使用JQuery得到()

"saveAndClose": function() { 
    var url = baseURL + "Product/UpdateProductFamily/" + $.trim($('#Id').text()) + "/" + $('#recordValue').val(); 
    $.get(
    url, 
    function (returnedData) { 
     alert('worked'); 
    }); 

呼叫甚至不使其向控制器,而不是我得到NHibernate會話管理器異常:

 private static void BeginTransaction(object sender, EventArgs e) 
    { 
     var x = NHibernateSessionManager.Instance; 
     x.BeginTransaction(); 

     Thread.CurrentThread.Name = x.GetSession().GetSessionImplementation().SessionId.ToString(); 

    } 

的x.GetSession()行錯誤說「的屬性已經設置,不能進行修改。」

這是怎麼回事?爲什麼一個簡單的JQuery得到控制器導致這個NHibernate錯誤?

+0

我可能會誤解你正在嘗試做的事情 - 但是如果你正在做保存,你不應該做一個帖子而不是一個get?你也嘗試過輸出'url'值是否看起來像一條有效的路線嗎? – Jen

+0

好的問題仁,我檢查了網址值,這是絕對有效的路線。就Get而言,看起來像是一種更輕量的方式來保存數據(我將這兩個值保存在URL中),而不是創建表單並執行Post。 –

回答

1

您收到的錯誤是嘗試在設置完成後設置CurrentThread的名稱的結果。

http://msdn.microsoft.com/en-us/library/system.threading.thread.name.aspx

我什麼不知道的,這就是爲什麼你需要在線程的名稱設置爲當前會話ID。

+0

謝謝一堆:)。在那裏,日誌可以關聯會話(和關聯的SQL語句)。我的問題更多是爲什麼在我的控制器被擊中之前甚至會調用代碼。 –

+1

您需要顯示InvalidOperationException的堆棧跟蹤以確定如何開始調用BeginTransaction方法。許多人在ASP.NET MVC中使用NHibernate時實現了每次請求事務。可能是因爲BeginTransaction在每次發出新請求時或者ActionFilterAttribute應用於控制器/操作時都會被調用。 –

+0

是的,我認爲這就是發生了什麼 – BlackTigerX