Linq到实体框架是否可以进行外部连接
有许多使用Linq到Sql的外部联接示例,它们都是基于Linq到实体框架是否可以进行外部连接,linq,entity-framework,left-join,Linq,Entity Framework,Left Join,有许多使用Linq到Sql的外部联接示例,它们都是基于DefaultIfEmpty(),这是Linq到实体框架不支持的 这是否意味着使用.NET3.5的LINQtoEntity不可能进行外部连接(我知道DefaultIfEmpty将随4.0一起提供,但目前我不能选择) 有人能提供一个使用Linq-to-EntityFramework的简明示例吗。在Linq-to-Entities中,考虑的是关系而不是SQL连接。因此,实体Person上与CustomerInfo具有一对零或一关系的SQL外部联接
DefaultIfEmpty()
,这是Linq到实体框架不支持的
这是否意味着使用.NET3.5的LINQtoEntity不可能进行外部连接(我知道DefaultIfEmpty将随4.0一起提供,但目前我不能选择)
有人能提供一个使用Linq-to-EntityFramework的简明示例吗。在Linq-to-Entities中,考虑的是关系而不是SQL连接。因此,实体
Person
上与CustomerInfo
具有一对零或一关系的SQL外部联接的字面等价物是:
var q = from p in Context.People
select new
{
Name = p.Name,
IsPreferredCustomer = (bool?)p.CustomerInfo.IsPreferredCustomer
};
L2E将合并联接,因此如果CustomerInfo为null,则整个表达式的计算结果为null。因此,强制转换为可为null的bool,因为推断出的不可为null的bool类型无法保存该结果
对于一对多,通常需要层次结构,而不是简单的SQL样式的结果集:
var q = from o in Context.Orders
select new
{
OrderNo = o.OrderNo,
PartNumbers = from od in o.OrderDetails
select od.PartNumber
}
这就像一个左连接,因为您仍然可以获得没有详细信息的订单,但它是一个类似于OO的图形,而不是一个类似于SQL的集合。这正是我想要的高质量答案。非常感谢。谢谢你的提示。当有人这样解释它时,它突然变得如此明显,以至于在L2E中,你想到的是对象之间的关系,而不是表之间的关系,但我没有想到。真让人大开眼界。。。