我試圖確定如果我做錯了什麼,或者如果實體框架只是無意這樣做。我想執行一個LINQ樣式查詢來填充一個對象,包括子元素的列表。在Linq2SQL中,這是有效的,並被轉換爲一個高效的SQL查詢,其結果填充新列表。實體框架無法在查詢中使用非實體類嗎?
class ReportItem
{
string Manager; /* ... */
List<string> Employees; /* ... */
}
var report = (from manager in entities.Managers
select new ReportItem()
{
Manager = manager.Name,
Employees = manager.Employees.Select(e => e.Name).ToList()
}).ToList();
實體框架僱員線會導致method cannot be translated into a store expression
錯誤 - 實體框架似乎並不喜歡構建LINQ語句中的非實體類,即使它不涉及任何數據庫方面的邏輯。
據我所知,對於變更跟蹤實體類都使用了,但是不可能將讀取信息變成任意類嗎?我不想爲每個可能的讀取場景構造實體和數據庫視圖,並且我不想在管道(整個Employee或Manager實體)上發送數據庫的一半,只是爲了讀取名稱屬性等內容。
是否有可能做這種「懶惰而高效的」查詢的實體框架,或實體框架只是沒有考慮到與它建立?我已經遇到了將一個項目從Linq2SQL轉換爲實體框架的許多問題,這可能真的會導致交易失敗。
不幸的是匿名類型的項目被認爲是,但對我來說員工和枚舉的列表之間的區別是有意義的。然而,這仍然回答了我關於EF設計行爲的真正問題。謝謝 – David 2010-12-08 17:50:54