Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;“双工”;Ef代码第一个数据库操作_C#_.net_Database_Entity Framework_Ef Code First - Fatal编程技术网

C# &引用;“双工”;Ef代码第一个数据库操作

C# &引用;“双工”;Ef代码第一个数据库操作,c#,.net,database,entity-framework,ef-code-first,C#,.net,Database,Entity Framework,Ef Code First,我有一个用户类,该类具有以下字段: public int Id { get; set; } public ICollection<Event> AdminEvents { get; set; } public ICollection<Event> SubscribedEvents { get; set; } 在我的上下文中创建模型时: modelBuilder.Entity<User>().HasMany(u => u.SubscribedEvents

我有一个
用户
类,该类具有以下字段:

public int Id { get; set; }
public ICollection<Event> AdminEvents { get; set; }
public ICollection<Event> SubscribedEvents { get; set; }
在我的
上下文中创建模型时

modelBuilder.Entity<User>().HasMany(u => u.SubscribedEvents).WithMany(u => u.Subscribed);
modelBuilder.Entity<User>().HasMany(u => u.AdminEvents).WithRequired(u => u.Admin).WillCascadeOnDelete(false);
modelBuilder.Entity().HasMany(u=>u.SubscribedEvents)。with many(u=>u.Subscribed);
modelBuilder.Entity()有许多(u=>u.AdminEvents)。WithRequired(u=>u.Admin)。WillCascadeOnDelete(false);

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

    值不能为null。参数名称:源

    但插入工作正常,值进入正确的表:
    **dbo.UserEvents**

  • 我的实体设计出了什么问题?。如果你需要更多的信息 要查找故障,请询问。谢谢
您的导航和集合属性(至少)应该是虚拟的,以便可以延迟初始化。

您的导航和集合属性(至少)应该是虚拟的,以便可以延迟初始化

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