c# - EF4 如何将一个表连接到两个或多个其他表

标签 c# entity-framework-4

如何将一个表连接到多个表?我们可以在 SQL 中轻松完成类似的事情

SELECT p.* FROM Person.BusinessEntity AS e
INNER JOIN Person.Person AS p ON e.BusinessEntityID = p.BusinessEntityID
AND e.BusinessEntityID = p.BusinessEntityID  INNER JOIN Person.BusinessEntityContact AS b 
ON e.BusinessEntityID = b.BusinessEntityID AND p.BusinessEntityID = b.PersonID

提前致谢

最佳答案

通常,您只需像在 SQL 中那样堆叠连接。我看到原来的问题已经澄清了一点,复合键连接可能是必要的,所以它将是堆叠连接与复合键的组合。 Gary.S在他对原始问题的评论中注意到复合键部分的正确语法,但我在这里修改了我的答案以包括相同的复合键选择。对于常规连接,您可以使用

 join … in … on … equals … 

对于复合键,您使用匿名类型来包含来自两个实体的所有键列。

这是一个应该与您正在寻找的内容有关的示例

var items = from e in Person.BusinessEntity
        join p in Person.Person on 
             e.BusinessEntityID equals p.BusinessEntityID
        join b in Person.BusinessEntityContact on 
             new {e.BusinessEntityID, p.BusinessEntityID} equals 
             new { b.BusinessEntityID, b.PersonID} 
        select p;

您可能还需要查看 GroupJoin,您需要它才能在 LINQ 中执行左外连接。

群组加入看起来像:

join … in … on … equals … into …

大多数案例的好例子可以在 101 samples page 找到

关于c# - EF4 如何将一个表连接到两个或多个其他表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8407412/

相关文章:

C# StreamReader, "ReadLine"用于自定义分隔符

c# - 编写 Entity Framework 查询的正确方法

c# - EF4.1 仅覆盖某些实体类型的 SaveChanges

.net - Entity Framework 4 中仅代码模型的优点?

c# - 检测 Twitter 提交 Android

c# - 检查点是否可见时出现 NullreferenceException

c# - Entity Framework 代码优先 : Custom Mapping Using Attribute?

c# - Entity Framework 4 支持多数据库吗?

c# - .NET:强制调试器进入属性的属性

c# - Autofac 属性注入(inject)在属性上失败