我目前正在使用SQL Server的EFCore 1.1(预览版).
我正在做我认为是Order和OrderItem表之间的简单OUTER JOIN .
var orders = from order in ctx.Order
join orderItem in ctx.OrderItem
on order.OrderId equals orderItem.OrderId into tmp
from oi in tmp.DefaultIfEmpty()
select new
{
order.OrderDt,
Sku = (oi == null) ? null : oi.Sku,
Qty = (oi == null) ? (int?) null : oi.Qty
};
Run Code Online (Sandbox Code Playgroud)
返回的实际数据是正确的(我知道早期版本的OUTER JOINS根本没有工作的问题).然而,SQL很糟糕,并且包括每个列,Order并且OrderItem考虑到其中一个是大型XML Blob ,这是有问题的.
SELECT [order].[OrderId],[order].[OrderStatusTypeId],[order].[OrderSummary],[order].[OrderTotal],[order].[OrderTypeId],[order].[ParentFSPId],[订单].[ParentOrderId],[order].[PayPalECToken],[order].[PaymentFailureTypeId] ....
... [orderItem].[OrderId],[orderItem].[OrderItemType],[orderItem].[Qty],[orderItem].[SKU] FROM [Order] AS [order] LEFT JOIN [OrderItem] AS [orderItem ] ON [order].[OrderId] …