【发布时间】:2011-09-20 13:55:31
【问题描述】:
背景
我有 2 个表:OrderItem 和 OrderItemValue。一个 OrderItem 可以有 0 个或 1 个 OrderItemPackageValue。两个表中的主键相同,并且存在从 OrderItems 到 OrderItemPackageValue 的外键引用
LINQ
var dummy =
from orderItem in context.OrderItems
select new
{
OrderID = orderItem.OrderID,
LineNumber = orderItem.LineNumber,
PackageValue = (decimal?)orderItem.OrderItemPackageValue.PackageValue
};
var dummy2 = dummy.ToArray();
SQL
SELECT
[Extent1].[OrderID] AS [OrderID],
[Extent1].[LineNumber] AS [LineNumber],
[Extent3].[PackageValue] AS [PackageValue]
FROM [dbo].[OrderItems] AS [Extent1]
LEFT OUTER JOIN [dbo].[OrderItemPackageValues] AS [Extent2] ON ([Extent1].[OrderID] = [Extent2].[OrderID]) AND ([Extent1].[LineNumber] = [Extent2].[LineNumber])
LEFT OUTER JOIN [dbo].[OrderItemPackageValues] AS [Extent3] ON ([Extent2].[OrderID] = [Extent3].[OrderID]) AND ([Extent2].[LineNumber] = [Extent3].[LineNumber])
我正在尝试通过 Linq2Entities (MSSQL) 获取它,它似乎正在生成一个额外的外部连接,我不知道如何摆脱它。
【问题讨论】:
标签: linq sql-server-2008 linq-to-entities outer-join