2011-03-18 47 views
3

我正在使用用NSericeBus處理的命令和通過只讀OData提供的查詢來處理CQRS風格的系統。使用NHibernate成功使用WCF數據服務(OData)?

我們希望由NHibernate支持WCF數據服務提要,以便我們可以控制數據在Feed(計算字段等)中的顯示方式,實體框架提供商不允許這些數據顯示。但是,將反射提供程序與Linq一起使用到NHibernate中時,導航到相關實體時(例如,http://server/feed/Foo(1)/Bar),我們會收到錯誤。

有沒有人提出一個Linq NHibernate支持WCF數據服務工作?

回答

0

你是什麼意思,你想做一些實體框架不允許的事情?

如果您需要計算字段,您可以使用計算字段在數據庫中定義視圖(SQL Server?),並將該視圖合併到只讀實體模型中。

如果您需要預先計算字段,您可以簡單地在您的denormalizer代碼中執行此操作。

你需要什麼樣的情況,你不能用EF做?

+0

Roy,想象一個帶有名爲'Duration'的列的表格,它對應於C#TimeSpan。它的值作爲刻度存儲在數據庫中(百萬分之一秒,不是非常用戶友好的)。我想提出一個名爲'DurationInMinutes'的專欄,將持續時間轉換爲分鐘。 – 2011-05-24 13:16:52

+0

您可以在View中輕鬆完成此操作。然後,您的視圖將包含像SELECT X,Y,持續時間/(60 * 10 * 1e6)AS DurationInMinutes,Z FROM ...之類的東西,然後您可以像查看真正的表一樣查詢您的視圖。 – 2011-05-24 13:20:18

0

最喜歡你正在尋找的是NHibernate.OData。這可以讓你獲取傳入的odata並讓NHibernate自動將其轉換爲DetachedCriteria實例。

+0

賈斯汀,我試圖走另一條路......從NHibernate創建一個oData feed。我不再使用oData或NHibernate(代替RavenDB),而且生活更好! – 2012-05-17 20:21:45