ef 更新导航属性

总之,要让所有的东西,都被DbContext管理状态

1、查出来,改了,再提交

2、new 出来,attach,再改,再提交

以上两种都较好理解

3、new出来,改了,再attach,在改状态,再提交

改状态这里,不是和普通属性一样Property(x=>x.?).IsModify=true,导航属性不能用这样的方式

因为导航属性对应的是一个集合,而状态是要对应到集合里的每个元素具体的状态,而不是集合整个的状态

((IObjectContextAdapter)db).ObjectContext.ObjectStateManager.ChangeRelationshipState(sourceEntity, targetEntity,navigationPropertySelector, relationshipState);
语句略显繁琐
第一个主表的对象
第二是导航属性集合中的某一个具体的对象
第三个是主表对象的导航属性x=>x.属性
最后一个是状态
原文地址:https://www.cnblogs.com/czcz1024/p/4164790.html