gpt4 book ai didi

c# - Entity Framework 4.1 修改对象和子集合

转载 作者:太空宇宙 更新时间:2023-11-03 11:37:19 24 4
gpt4 key购买 nike

如果我的 Book 对象有 Comments 的子集合,我可以更新 Book 和 Comments 列表以及 Entity Framework 吗?

我试过了:

_context.Books.Attach(book);
_context.ObjectStateManager.ChangeObjectState(book, EntityState.Modified);
_context.SaveChanges();

没有运气......

在第一行出现以下错误:

ObjectStateManager 中已存在具有相同键的对象。 ObjectStateManager 无法跟踪具有相同键的多个对象

最佳答案

您很可能有循环依赖(Books 有一个外键引用 Comments,而 Comments 返回 Books)。在这种情况下,EF 中的 UpdateTranslator 无法确定依赖顺序。据我所知,在这种开发模型中,无法向 EF 传递提示以指示顺序是什么。

解决这个问题的最常见方法(我见过的)是进行两阶段提交。对 Book 进行更改并保存,然后对 Comments 进行更改并保存。我发现使用 Code First方法使您可以更具体地了解关系,从而解决我遇到的许多问题。

编辑:
这是一个例子:

using (var context = new BookContext())
{
book.Title = "This is the new title";
context.SaveChanges();

book.Comments.Add(new Comment("This is a comment"));
context.SaveChanges();
}

如果存在循环依赖,则不能通过一次调用 SaveChanges 来完成上述操作。

关于c# - Entity Framework 4.1 修改对象和子集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5822264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com