设置收集到修改的实体框架

问题描述 投票:4回答:2

如何设置的集合,以同样的方式,我会做修改

_context.Entry(thing).Property(x => x.MyProperty).isModified = true;

喜欢:

_context.Entry(thing).Collection(x => x.MyCollection).isModified = true;

编辑:这样做的目的,就是我的收藏是存储在一个查找表对象的列表。我只会有存根的列表以及它们的ID在此集合,我想没有与审计值梅辛和其他任何的查询对象内包含更新的关系。例如,联系人将有多个联系人类型,无论出于何种原因在这种情况下复杂的对象。我希望能够添加和删除仅使用FKS类型,让EF处理关系的修正。

public class Contact
{
   public int Id {get;set;}
   public list<ContactTypes> ContactTypes {get;set;}
   //audit values/other properties
}

public class ContactType
{
   public int Id {get;set;}
   public string Value {get;set;}
}
c# entity-framework-6
2个回答
3
投票

context.Entry代表一个单一的实体,从来没有一个集合。所以,你通过收集必须循环和标记每个实体修改。


1
投票

如果你有ForeignKey的对象的列表,你可能知道它是多么令人沮丧,迫使英孚的关系Fixup时他们。下面是光滑的方式来做到这一点。

public void SetContactTypesToUnchanged(Contact contact)
  {
    contact.ContactTypes.Each(type => _context.Entry(type).State = EntityState.Unchanged);
    _context.SaveChanges();
  }
© www.soinside.com 2019 - 2024. All rights reserved.