使用 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
。
方法真的很简单,我看不出我错过了什么...
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
。