方法非常简单,我看不出我错过了什么......
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; }
}
以下是该值的屏幕截图:
答案 0 :(得分:1)
如果未将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;
}
您可能还想更新类定义并将EventTags属性设置为virtual
。
public class Event
{
public int EventId { get; set; }
public string Name { get; set; }
public virtual ICollection<EventTag> EventTags { get; set; }
}
在屏幕截图中,看起来标签正在加载,但不会加载标签上的Location属性。如果是这种情况,那么请确保将Location属性设置为virtual
。