У меня есть модель, которая выглядит как этотMVC 5 от одного до нескольких виртуальных ICollection, возвращающих null?
public class MyModel
{
....
public virtual ICollection<Comm_ent> Comments { get; set; }
}
и подмодели выглядеть
public class Comm_ent
{
...
public virtual My_Model MyModel{ get;set;}
}
В моей Comm_ent Datatable
У меня есть MyModelId
ключ, созданный в результате миграции, но когда я
public actionresult MyModelIndex(int? id)
{
var mymodel = _context.MyModels.singleordefault(u => u.Id == id)
return View(mymodel);
}
@Model.Comments
is null
хотя у меня есть записи в Comm_ent datatable
. Он работал в MVC4, но после обновления до MVC5 он возвращает нулевой результат. Любые идеи, как это сделать в MVC5?
Хм ... Вы уверены, что разместили код как есть? Единственный способ, которым вы должны получить null, - это то, что вы либо отказались от 'virtual' в свойстве, либо получили доступ к экземпляру' MyModel', который не поступал из базы данных. Когда Entity Framework извлекает объекты, он фактически возвращает прокси, которые производны от класса сущности. В этом прокси-сервер он перегружает свойство (поэтому важно «виртуальный»), чтобы добавить функциональность для ленивой загрузки. Вызов 'get' в свойстве (доступ к его значению) всегда будет в этом пункте либо возвращать граф объекта, либо выдавать запрос для его получения, но не null. –