我有以下型号:
RegisterType中的“Fields”属性是IList。
我正在使用Entity Framework 5,我想知道是否有任何方法可以更新我的RegisterType对象并级联以在Fields属性中自动添加,更新或删除我的RegisterField。
我试过这个
dbContext.Entry(registerType).State = EntityState.Modified;
dbContext.SaveChanges();
但它不起作用。
我正在使用MVC Web项目,因此我无法保存从数据库中读取的第一个对象的状态。
答案 0 :(得分:4)
您需要以与registerType相同的方式设置RegisterField实体的状态。
dbContext.Entry(registerType).State = EntityState.Modified;
forech (var f in registerType.Fields)
{
dbContext.Entry(f).State = ( f.Id == default(int) ? EntityState.Added : EntityState.Modified);
}
否则它们都默认为未修改,SaveChanges()
将忽略它们此外,您需要确保在每个添加的RegisterField实体上设置RegisterTypeId
,否则EF会在您附加registerType时阻塞。