2013-04-12 22 views
0

我有一個使用NHibernate和FluentNHibernate的ASP.Net MVC 3網站。大多數情況下,一切運作良好。我最近迷上了Elmah,當我查看日誌時,出現了一些錯誤,其中似乎NHibernate間歇性地返回了空數據以用於應該返回數據的查詢。NHibernate有時候返回null的確切相同的查詢

例如:

MyObject myObject = session.Query<MyObject>() 
          .Where(m => m.Id == myObjectId && m.UserId == userId) 
          .Single(); 

myObjectId在被傳遞給從鏈路控制器(即MyController/MyAction/1)另一頁

userId從我知道作爲用戶登錄存在會話檢索上in。

在一種情況下,用戶嘗試單擊鏈接兩次但收到錯誤頁面。我登錄了,自己嘗試了一下並且工作正常(NHibernate正確地檢索到了這些數據)

基於此,可能出現這種情況的原因是什麼?這是我應該看的配置設置嗎?

以下是有關應用程序的一些詳細信息:

  • 使用Asp.Net MVC 3
  • SQL Server 2008 R2的
  • 用途CastleWindsor注入的Isession到控制器的構造

謝謝!

+1

ISession的生命週期是什麼? – mickfold

+0

LifeStyleType.IsTransient – HighGuard2012

回答

1

基於此,可能會出現這種情況的原因是什麼?

我不是一個ASP.Net程序員,但可能有任何數量的原因。猜測可能的原因並不是一個好策略。

而不是猜測,你需要嘗試有條不紊地進行調試。我會先改變代碼,以便在問題發生時記錄更多信息;例如myObjectIduserId的值,以及查詢Where(m => m.Id == myObjectId)以查看對象是否存在以及該對象實際在當時的實際結果。