【发布时间】:2016-01-20 13:20:45
【问题描述】:
我有这个简单的模型:
class Parent
{
public int Id { get; set; }
public virtual ICollection<Child> Children { get; set; }
}
class Child
{
public int Id { get; set; }
public int ParentId { get; set; }
public virtual Parent Parent { get; set; }
}
class MyContext : DbContext
{
public DbSet<Parent> Parents { get; set; }
public DbSet<Child> Children { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Child>().HasRequired(s => s.Parent).WithMany(s => s.Children).HasForeignKey(s => s.ParentId);
base.OnModelCreating(modelBuilder);
}
}
当我如下使用MyContext 时,我得到空引用异常,因为child.Parent 为空
var context = new MyContext();
var child = context.Children.First();
var parentId = child.Parent.Id; // Parent == null
要解决这个问题,我必须将Parent 和Child 类的访问修饰符更改为public。
为什么需要这样做?或者这只是一个错误?
【问题讨论】:
-
不是真正的重复,因为它确实回答了“为什么”但类似的问题......stackoverflow.com/questions/7619955/…
标签: c# entity-framework