2012-07-26 87 views
1

我有一个User类具有以下字段:“双面” EF代码第一DB操作

public int Id { get; set; } 
public ICollection<Event> AdminEvents { get; set; } 
public ICollection<Event> SubscribedEvents { get; set; } 

而且我Event类的样子:在

public int Id { get; set; } 
public ICollection<User> Subscribed { get; set; } 
public User Admin { get; set; } 
public int AdminId { get; set; } 

OnModelCreating我Context

modelBuilder.Entity<User>().HasMany(u => u.SubscribedEvents).WithMany(u => u.Subscribed); 
modelBuilder.Entity<User>().HasMany(u => u.AdminEvents).WithRequired(u => u.Admin).WillCascadeOnDelete(false); 

  • 这里的关键是,用户可以创建一个事件(Event.Admin && Admin.Id),并可以订阅其他事件(User.SubscribedEvents && Event.Subscribed
  • 当我尝试访问User.SubcribedEvents.ToList()它抛出 以下错误:

    值不能为null.Parameter名:源

    但插入的作品,和值进入右击t表: **dbo.UserEvents**

  • 我的实体设计出了什么问题?如果你需要更多的信息 追查麻烦请问。谢谢!

回答

1

您的导航和收藏属性(至少)应该是虚拟的,以便它们可以被懒惰地初始化。