2

Background

I have 2 tables: OrderItem and OrderItemValue. An OrderItem can have 0 or 1 OrderItemPackageValue. The Primary key in both tables is the same and there is a foreign key reference from OrderItems to 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])

I'm trying to get this via Linq2Entities (MSSQL) and it seems to be generating an extra outer join, and I can't figure out how to get rid of it.

Steven
  • 166,672
  • 24
  • 332
  • 435
Adam Tegen
  • 25,378
  • 33
  • 125
  • 153

1 Answers1

0

This is a bug; see here and here.

Workaround: Try changing your relationship from 1 : Many to 0..1 : Many

Community
  • 1
  • 1
BlueRaja - Danny Pflughoeft
  • 84,206
  • 33
  • 197
  • 283