两个LINQ数据上下文问题

时间:2010-08-13 15:04:50

标签: linq-to-sql

使用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查询?

1 个答案:

答案 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();