使用AdventureWorks數據庫的Products表爲例,我創建了一個DBML和擴展在DataContext的特性,包括一個新的屬性:LINQ異常:「不支持查詢與本地集合。」但不使用本地收集
partial class AdventureWorksDataContext { public IQueryable<Product> FinishedProducts { get { return Products.Where(p => p.FinishedGoodsFlag); } } }
產品屬性的一部分生成的DataContext和我所做的一切都是從表<產品>添加一個位置,因此它返回一個IQueryable。現在
,問題就來嘗試查詢像這樣當(愚蠢的例子,但一個應該顯示的問題):
var queryFinishedProducts = datacontext.FinishedProducts.Where(fp => fp.ProductID == datacontext.FinishedProducts.Max(p => p.ProductID));
迭代這個查詢結果「與當地館藏查詢是不支持「的例外。我不明白爲什麼當沒有使用本地集合時會拋出這個錯誤。如果我運行它以與普通產品表(這是一個Table<Product>
):
var queryProducts = datacontext.FinishedProducts.Where(fp => fp.ProductID == datacontext.Products.Max(p => p.ProductID));
...它工作正常。唯一的區別是我添加了一個Where到Table<Product>
並將其作爲IQueryable<Product>
返回。
任何人有任何想法?
已完成產品屬性? 「獲得」在哪裏? – 2010-12-11 04:30:25
是的,這是一個屬性。對不起,我會添加清晰度。 – Mike 2010-12-12 07:27:58
看起來也許SQL生成器無法判斷FinishedProducts查詢中使用的'Products'是否與查詢的其餘部分來自同一個'DataContext'。 – Gabe 2010-12-12 07:47:58