2012-07-18 105 views
1

是否可以在EF實體中包含計算字段?例如,假設我有一家商店銷售產品,並且這些產品分爲幾類。實體框架,計算實體字段

當顯示類別列表供店鋪管理員編輯時,我希望列出每個類別中產品的數量作爲列表的一部分。

在NHibernate中,我會使用一個公式,例如

<property name="Products" formula="dbo.Category_NumProducts(id)" /> 

如果類似的東西可能用於EF,我無法解決。我知道我可以創建一個類別視圖,並將其映射到第二個實體,但這似乎是錯誤的,因爲它幾乎是一個完整的重複。

編輯:如果這在EF中不可行,那麼完成此操作的最佳方法是什麼?

回答

2

不幸的是,如果你的Category表沒有這個計算列,你將無法在不創建第二個實體的情況下映射它 - 它會導致數據庫視圖,在EDMX中定義查詢或在EDMX中定義查詢視圖(但Query查看可能無法工作,因爲您需要計算聚合函數)。

編輯:

恕我直言,最簡單的辦法(也是最好的)只是建立一個ViewModel(一些非映射類)和Linq查詢使用投影:

var query = from c in context.Categories 
      where ... 
      select new CategoryView { 
       Id = c.Id, 
       Name = c.Name, 
       ... 
       Products = c.Products.Count() 
      }; 
+0

確定感謝,那就是我得到的印象。你提到的方法(查看,定義查詢等),解決這個問題的正確方法是什麼?我只是檢查我沒有從錯誤的角度來看待它。乾杯 – 2012-07-18 09:37:06

+0

我添加了一些例子,我將如何解決這個問題。 – 2012-07-18 10:08:59

+0

好的,這是有道理的,因爲我使用的存儲庫模式我可能需要創建第二個實體,就像你最初的建議。嗯,它使我像NHibernate越來越多,我從來沒有喜歡它:) – 2012-07-18 10:23:01