2013-10-24 31 views
1

我是一名經驗豐富的EF開發人員,但對NHibernate來說很陌生。如何以NHibernate作爲ORM實現EntitySetController可查詢ODATA並處理事務?

在MVC 4項目中,EntitySetController ODATA Queryable支持非常易於實現,並且還提供了更多的自由度。

然而,它是微軟的堆棧技術,EF有最好的支持,當我考慮用NHibernate替換EF時,我遇到了「所有的調用都應該在NHibernate中的一個事務下」。問題。

由於ayende的博客:NH警報教授:隱式事務的使用氣餒 http://ayende.com/blog/3775/nh-prof-alerts-use-of-implicit-transactions-is-discouraged

所以,問題是如何使用EntitySetController與NHibernate當包裹查詢在「交易」?

代碼示例和文章等,將不勝感激。 非常感謝。

+1

'使用(var tx = session.BeginTransaction()){doSomething(); }'? – Firo

+0

嗨@Firo,感謝您指出明顯。我對NHibernate很陌生,我沒有想到這會馬上工作。 ...我剛剛創建了一個MVC項目來測試這個東西,它的工作原理。衛生署。但是如何?我將爲此創建另一個問題。再次感謝。 –

回答

1

EF隱式處理事務,NHibernate需要顯式代碼。因此,每個業務操作(例如請求)將圍繞它具有其中的

using (var tx = session.BeginTransaction()) 
{ 
    // Do something 
    tx.Commit(); 
} 

。你可以在BeginHandleRequest,EndHandleRequest類似的方法中實現它作爲Web應用程序中的方面