Linq在两个实体和3个表之间连接

时间:2014-04-21 22:22:11

标签: c# sql linq

我正在尝试使用来自2个不同SQL Server(实体)的LINQ加入3个表。

Error: The specified Linq expression contains references to queries that are associated with different contexts

var query = from a in EntityA.TableA
            join p in EntityA.TableB
            on a.PersonID equals p.PersonID
            join m in EntityB.TableC
            on Convert.ToInt32(a.SourceID) equals m.ID
            where p.someID == "100000527"
            select m.ID;

请帮我解决这个问题。

答案:

     var query = from a in EntityA.TableA
        join p in EntityA.TableB
        on a.PersonID equals p.PersonID
        where p.someID == "100000527"
        select a.ID;

    IQueryable<int> ID = null;

    foreach (var item in query)
    {
        int sourceID= Convert.ToInt32(item);
        ID = (from m in EntityB.TableC
              where m.ID == sourceID
              select m.ID).Distinct();
    }

    return ID;

这是正确的方法吗?

1 个答案:

答案 0 :(得分:0)

您一次只能在一个数据库上编写Linq到SQL查询。

如果要将数据连接在一起,则必须分别编写两个查询,从中创建匿名类型对象,然后使用普通的旧Linq对象将它们连接在一起。