Я не уверен, как обойти эту проблему linq to SQL, которая у меня есть.Свойства дочернего объекта в моем графе объектов загружаются не так, как я ожидал.
Мой код доступа к данным инкапсулирован в слой модели, поэтому загрузка полного графа объекта должна быть завершена до того, как объект будетвозвращено.
Я использую следующий код для заполнения графа объектов.
"Счет-фактура" является целевым объектом здесь.У него есть родительский объект «Порядок» и дочерние объекты «InvoiceItems».
Здесь загружается все, кроме «OrderItems», которые являются прямым потомком «Order», но также отображаются на «InvoiceItems».Доступ к ним осуществляется посредством ссылки на «InvoiceItems» в этом контексте.
Это очевидно, потому что «OrderItems» находятся на двух уровнях от объекта «Invoice», доступ к которому осуществляется через Invoice.InvoiceItems.OrderItem, где другие свойства, указанные в параметрах загрузки, отображаются непосредственно в Invoice.
Как загрузить объекты на 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;
}