【问题标题】:Linq join between two Entities and 3 Tables [duplicate]两个实体和3个表之间的Linq连接[重复]
【发布时间】:2014-04-22 08:11:56
【问题描述】:

我正在尝试使用来自 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;

这是正确的方法吗?

【问题讨论】:

  • 我看过那个链接。但我想我的情况有点不同,因为我根本没有得到 System.NotSupportedException。我以为我的和stackoverflow.com/questions/7332920/… 一样
  • 另外,Convert.ToInt32(a.SourceID) 无论如何也不起作用
  • 谢谢。我现在修改了。

标签: c# sql linq


【解决方案1】:

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-08-07
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 2019-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多