そのため、LinqPadからEF 4.3アプリケーションにまったく同じクエリをコピーして貼り付け、まったく同じデータベースをポイントして、異なる結果を取得します。LinqPadでは、2つのレコードが返されます。このアプリケーションでは、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生します。
var Shippings = shippingRepository.All.ToArray();
var SalesOrderHeaders = salesOrderHeaderRepository.All.ToArray();
var Customers = customerRepository.All.ToArray();
var Stores = storeRepository.All.ToArray();
var Departments = departmentRepository.All.ToArray();
var toShip = from sh in Shippings
join h in SalesOrderHeaders on sh.OrderId equals h.SalesOrderHeaderId
join c in Customers on h.CustomerId equals c.CustomerId
join st in Stores on h.StoreId equals st.StoreId
join d in Departments on h.DepartmentId equals d.DepartmentId into outer
from o in outer.DefaultIfEmpty()
select new
{
OrderId = sh.OrderId,
CustomerName = c.Name,
StoreName = st.Name,
DepartmentName = (o.Name == null) ? o.Name : "None",
DeliveryDate = h.DeliveryDateTime
};
アプリケーションコードで、(部門を追加するために)外部結合とそれに関連付けられたフィールドを削除すると、クエリはLinqPadと同じ2つのレコードを返します。
この機能を修正する方法について誰かが洞察を持っていますか?