JOIN实体框架中两个模型的实体之间

时间:2012-07-24 11:21:52

标签: sql linq entity-framework

我有两个表位于两个独立的Entity Framework模型中,我想检索在两个表之间建立JOIN的数据。我正在使用Entity Framework 3.1。

是否可以检索在两个表之间进行JOIN的信息?

如果是,我应该使用“LINQ to Entities”还是“Entity SQL”?

3 个答案:

答案 0 :(得分:0)

据我所知,EF不会这样做。您无法使用来自多个域的实体创建单个表达式。当您请求结果的第一项时,它将失败。

答案 1 :(得分:0)

实体框架模型是数据库(商店)模型和类模型之间的映射。目前(如果有的话)一个EF模型无法读取另一个模型的映射信息。因此,它无法将外来类映射到表,更不用说创建涉及该表的SQL。就EF而言,表格可能位于两个完全不同的数据库中。

备选方案:

  • 使用linq-to-objects来连接来自两个模型的预取数据,即通过例如数据提取到存储器中的数据。 ToList()
  • 从一个模型中收集值列表,并使用它来从另一个模型中获取数据(例如,OrderId语句中使用的Contains列表获取Orderline语句s来自另一个模型 - 不切实际的例子,OK)。
  • 仅使用一个EF模型映射到两个(和更多)表。

答案 2 :(得分:-1)

你可能已经想到了这个,但这是我的解决方案:

var data = db.FirstEntity
           .Join(db.SecondEntity, ent1 => ent1.ID, ent2 => ent2.ForeignKeyID,
           (ent1, ent2) => new { LeftSideObject = ent1, RightSideObject = ent2 }) 
           .Select(x => x.LeftSideObject); 

我已经尽可能地将变量命名为,希望它有意义!