我不知道如何解決這個LINQ to SQL問題,我有。我的對象圖中的一個子對象的屬性沒有像我所預期的那樣加載。Linq - 在子對象上加載EntitySet/EntityRef - 只有1級可加載?
我的數據訪問代碼封裝在模型層中,因此在返回對象之前需要完成完整對象圖的加載。
我使用下面的代碼來填充對象圖。
「發票」是此處的目標對象。它有一個父對象「Order」和子對象「InvoiceItems」。
除了「OrderItems」,它們是「Order」的直接子元素,但也映射到「InvoiceItems」的所有內容都加載在這裏。它們通過參考本文中的「InvoiceItems」來訪問。
這顯然是因爲「OrderItems」離開「Invoice」對象的兩個級別,通過Invoice.InvoiceItems.OrderItem訪問,其中載入選項中指定的其他屬性直接映射到發票。
如何加載對象遠離目標對象2個等級?
我希望這是有道理的。
using (var dc = new ProjDataContext(Config.ConnectionStringERPDB))
{
if (loadObjectGraph)
{
var loadOptions = new DataLoadOptions();
loadOptions.LoadWith<Invoice>(x => x.InvoiceItem);
loadOptions.LoadWith<Invoice>(x => x.Order);
loadOptions.LoadWith<InvoiceItem>(x => x.OrderItem);
loadOptions.LoadWith<OrderItem>(x => x.Product);
dc.LoadOptions = loadOptions;
}
Invoice invoice = (from c in dc.Invoice
where c.ID == invoiceID
select c).FirstOrDefault();
return invoice;
}
這是奇怪的。您可以使用EF進行深度加載,但我不知道您無法使用L2S進行加載。很高興知道。 – 2011-06-17 14:23:46