Ral*_*ton 18 linq entity-framework left-join
有很多使用Linq到Sql的外连接的例子,所有DefaultIfEmpty()这些都是Linq to Entity Framework不支持的.
这是否意味着Linq to Entity使用.NET 3.5无法实现外连接(我知道DefaultIfEmpty将带有4.0 ---但这对我来说不是一个选项)
有人可以使用Linq to EntityFramework提供一个简明的例子.
Cra*_*ntz 36
在LINQ to Entities中,考虑关系而不是SQL连接.因此,Person具有一到零或一个关系的实体上的SQL外连接的字面等价物CustomerInfo将是:
var q = from p in Context.People
select new
{
Name = p.Name,
IsPreferredCustomer = (bool?)p.CustomerInfo.IsPreferredCustomer
};
Run Code Online (Sandbox Code Playgroud)
L2E将合并连接,因此如果CustomerInfo为null,则整个表达式的计算结果为null.因此,铸造成可空的布尔,因为推断类型的非可空博尔无法保持这种结果.
对于一对多,您通常需要层次结构,而不是平面的SQL样式结果集:
var q = from o in Context.Orders
select new
{
OrderNo = o.OrderNo,
PartNumbers = from od in o.OrderDetails
select od.PartNumber
}
Run Code Online (Sandbox Code Playgroud)
这就像左连接,因为你仍然得到没有细节的订单,但它是像OO的图形而不是像SQL这样的集合.
| 归档时间: |
|
| 查看次数: |
8314 次 |
| 最近记录: |