保存单个实体而不是整个上下文

dkr*_*r88 3 c# entity-framework

我遇到了一个场景,我基本上需要将一对多关联的子实体的更改写入数据库,但不保存对父实体所做的任何更改.

实体框架目前处理上下文范围(EntityContext.SaveChanges())中的数据库提交,这对于实施关系等是有意义的.但我想知道是否有一些最佳实践或者可能是推荐的方法去做好 - 数据库提交个人entite而不是整个上下文.

Cra*_*ntz 8

最佳做法?除此之外,你的意思是"不要这样做!"?

我认为没有最佳做法使ObjectContext与数据库的状态不同.

如果你必须这样做,我会新建一个新的ObjectContext并在那里对子实体进行更改.这样,两种情况都是一致的.

  • 使用单独的上下文是一种很好的方法.过程基本上是:1)创建另一个ObjectContext并附加附加子对象2)设置父导航属性的EntityKey 3)保存新上下文然后分离子项4)将子项附加到"主"上下文 (2认同)