如何设置的集合,以同样的方式,我会做修改
_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;}
}
context.Entry
代表一个单一的实体,从来没有一个集合。所以,你通过收集必须循环和标记每个实体修改。
如果你有ForeignKey的对象的列表,你可能知道它是多么令人沮丧,迫使英孚的关系Fixup时他们。下面是光滑的方式来做到这一点。
public void SetContactTypesToUnchanged(Contact contact)
{
contact.ContactTypes.Each(type => _context.Entry(type).State = EntityState.Unchanged);
_context.SaveChanges();
}