Сначала я использую код EF4.1 для создания простого приложения базы данных с бэкэндом SQL CE 4. У меня есть класс Product и класс CallItem, определенные следующим образом:
class CallItem
{
public int id { get; set; }
public float discount { get; set; }
public virtual Product Product { get; set; }
}
class Product
{
public int id { get; set; }
public decimal BaseCost { get; set; }
public int UnitSize { get; set; }
public bool isWasteOil { get; set; }
public string Code { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Ingredients { get; set; }
}
edit - Когда я создаю коллекцию CallItems с помощью запроса LINQ, я не могу получить доступ к атрибутам Продукта, прикрепленным к каждому CallItem, например
var callItems = from ci in context.CallItems select ci;
foreach(CallItem callItem in callItems)
{
RunSheet nrs = new RunSheet();
nrs.prodCode = callitem.Product.Code;
}
Опрос базы данных показывает, что Productid в CallItems заполняется. Однако следующая строка генерирует исключение NullReferenceException во время выполнения:
nrs.prodCode = callitem.Product.Code;
Потому что callitem.Product оценивается как ноль. Это как-то связано с отложенной загрузкой и если да, то как я могу решить проблему?
RunSheet - это другой класс, nrs - это экземпляр, атрибут которого 'prodCode', который я хочу заполнить кодом продукта CallItem.
Спасибо!