我有这个班级
public class Comment
{
public long Id { get; set; }
public string Body { get; set; }
public long OwnerId { get; set; }
public virtual Account Owner { get; set; }
public DateTime CreationDate { get; set; }
}
问题是虚拟财产所有者是我在执行时获得null object reference exception
:
comment.Owner.Name
在保存对象后立即调用此对象(来自同一个DbContext实例) 使用新的上下文将起作用
有人对此有所了解吗?
答案 0 :(得分:18)
那是因为你用构造函数创建了Comment
。这意味着Comment实例未被代理,并且它不能使用延迟加载。您必须使用Create
上的DbSet
方法来获取Comment
的代理实例:
var comment = context.Comments.Create();
// fill comment
context.Comments.Add(comment);
context.SaveChanges();
string name = comment.Owner.Name; // Now it should work because comment instance is proxied