“Duplex”Ef代码首先是db操作

时间:2012-07-26 17:44:40

标签: c# .net database entity-framework ef-code-first

我的 User 类包含以下字段:

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。参数名称:source

    但插入有效,值进入右表: **dbo.UserEvents**

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

1 个答案:

答案 0 :(得分:1)

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