【发布时间】:2011-05-23 19:21:15
【问题描述】:
以 AdventureWorks 数据库的 Products 表为例,我创建了一个 DBML 并扩展了 DataContext 的属性以包含一个新属性:
部分类 AdventureWorksDataContext { public IQueryableProducts 属性是生成的 DataContext 的一部分,我所做的只是从 Table
现在,当尝试像这样查询它时,问题就出现了(愚蠢的例子,但应该显示问题):
var queryFinishedProducts = datacontext.FinishedProducts.Where(fp => fp.ProductID == datacontext.FinishedProducts.Max(p => p.ProductID));
迭代此查询会导致“不支持具有本地集合的查询”异常。我不明白为什么在没有使用本地集合时会抛出该错误。如果我对正常的 Products 表(这是一个 Table<Product>)运行它:
var queryProducts = datacontext.FinishedProducts.Where(fp => fp.ProductID == datacontext.Products.Max(p => p.ProductID));
...它工作正常。唯一的区别是我在 Table<Product> 中添加了 Where 并将其返回为 IQueryable<Product>。
有人有什么想法吗?
【问题讨论】:
-
FinishedProducts 是一个属性吗? “get”在哪里?
-
是的,它是一个属性。抱歉,为了清楚起见,我将添加 get。
-
看起来 SQL 生成器可能无法判断 FinishedProducts` 查询中使用的
Products与查询的其余部分来自同一个DataContext。
标签: linq exception datacontext