UseDatabaseNullSemantics по-прежнему генерирует NULL-проверки
У меня есть это на моем объекте контекста (конструктор):
this.Configuration.UseDatabaseNullSemantics = true;
Но даже с этим набором, этот запрос:
var query = (from i in _repo.Invoices
join o in _repo.Orders on i.orderid equals o.orderid
join o2 in _repo.Orders on o.linkedorderid equals o2.linkedorderid into leftOrders
from lo in leftOrders.DefaultIfEmpty()
where invoiceIds.Contains(i.invoiceid)
select new
{
i, lo
}).ToList();
Возвращает этот SQL:
SELECT
[Extent1].[invoiceid] AS [invoiceid],
[Extent1].[custid] AS [custid],
[Extent1].[orderid] AS [orderid],
[Extent1].[orderamount] AS [orderamount],
[Extent1].[invoiceamount] AS [invoiceamount],
[Extent1].[paidamount] AS [paidamount],
[Extent1].[paidstatus] AS [paidstatus],
[Extent1].[printdate] AS [printdate],
[Extent1].[updateddate] AS [updateddate]
FROM [dbo].[invoices] AS [Extent1]
INNER JOIN [dbo].[orders] AS [Extent2] ON [Extent1].[orderid] = [Extent2].[orderid]
LEFT JOIN [dbo].[orders] AS [Extent3] ON ([Extent2].[linkedorderid] = [Extent3].[linkedorderid]) OR (([Extent2].[linkedorderid] IS NULL) AND ([Extent3].[linkedorderid] IS NULL))
WHERE [Extent1].[invoiceid] IN (3098489, 3123185, 3156838)
Нетрудно видеть, что я получаю ошибку System.OutOfException, так как у меня есть тонны заказов с связанными значениями, равными NULL.
Если я удалюOR (([Extent2].[linkedorderid] IS NULL) AND ([Extent3].[linkedorderid] IS NULL))
запрос выполняется нормально и возвращает все счета, которые имеют или не имеют дочерние рабочие задания ...
Любая идея, как я могу решить это?