使用 Entity framework 将新对象和我的新对象的子集合添加到数据库中

Adding a sub collection of new object and my new object into the database with Entity framework

方法真的很简单,我看不出我错过了什么...

 public int SaveEvent(Data.Models.Event evnt)
    {
        db.Events.Add(evnt);
        db.SaveChanges();

        return evnt.EventId;
    }

这里是对象声明:

   public class Event
    {
        public int EventId { get; set; }
        public string Name { get; set; }
        public ICollection<EventTag> EventTags { get; set; }
    }

evnt 对象包含一个 属性 名称 EventTags,其中包含 6 个新元素。 evnt 已插入数据库,但 EventTag 未插入...知道吗?没有错误。只是 EventTag 没有添加...

public class EventDbContext : DbContext
{
    public DbSet<Event> Events { get; set; }

    public DbSet<EventTag> EventTags { get; set; }
    public DbSet<Tag> Tags { get; set; }

}

这是该值的屏幕截图:

如果没有将 EventTag 添加到数据库中,您可能需要为每个标签手动指定 EntityState。

public int SaveEvent(Data.Models.Event evnt)
{

    foreach(var tag in evnt.EventTags) 
    {
       db.Entry(tag).State = EntityState.Added; 
    }

    db.Events.Add(evnt);
    db.SaveChanges();
    return evnt.EventId;
}

您可能还想更新 class 定义并将 EventTags 属性 设置为 virtual

 public class Event
 {
     public int EventId { get; set; }
     public string Name { get; set; }
     public virtual ICollection<EventTag> EventTags { get; set; }
 }

在您的屏幕截图中,标签似乎正在加载,但标签上的位置 属性 并未加载。如果是这种情况,请确保也将位置 属性 设置为 virtual