使用LINQ2SQL时出现此错误:
The query contains references to items defined on a different data context.
以下是代码:
var instances = (from i in context.List
join j in context.CatsList on i.ListID equals j.ListID
join c in context.Cats on j.CatID equals c.CatID
where c.SID == Current.SID
orderby i.Title
select i).Distinct();
据我所知,问题是Current
对象实际上是从执行不同LINQ语句的属性返回的LINQ2SQL对象。
因此,LINQ2SQL不喜欢在数据库上执行查询,在该数据库中必须从一个LINQ语句构建查询,包括另一个语句的结果。
我的问题在于(我将尝试总结此处的问题)使用与上述查询相同的上下文检索Current
对象,最终Current.SID
应该简单地解析为int
,那么编译器执行它的问题是什么?
简而言之,为什么不能使用先前查询的返回对象作为参数执行LINQ查询?
答案 0 :(得分:0)
这是问题的解决方案,而不是你最后一个问题的直接答案,但你可能会接受:
var sid = Current.SID;
var instances = (from i in context.List
join j in context.CatsList on i.ListID equals j.ListID
join c in context.Cats on j.CatID equals c.CatID
where c.SID == sid
orderby i.Title
select i).Distinct();