【发布时间】:2015-11-25 03:05:46
【问题描述】:
我有一个看起来像这样的模型
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 是 null,尽管我在 Comm_ent datatable 中有条目。这在 MVC4 中工作,但升级到 MVC5 后它返回 null 结果。任何想法如何在 MVC5 中做到这一点?
【问题讨论】:
-
嗯...您确定按原样发布代码吗?获得 null 的唯一方法是,如果您在属性上离开
virtual,或者正在访问不是来自数据库的MyModel实例。当 Entity Framework 检索实体时,它实际上返回从实体类派生的代理。在该代理中,它重载了属性(这就是virtual很重要的原因)以添加延迟加载功能。在属性上调用get(访问它的值),将始终返回对象图或发出查询以检索它,永远不会为空。
标签: c# asp.net-mvc asp.net-web-api asp.net-mvc-5