gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 05:59:05 27 4
gpt4 key购买 nike

我有以下代码来添加或更新实体对象。根据我添加或更新对象的响应,通过主键查找对象。

添加记录有效,但在更新期间给出此错误消息“ObjectStateManager 中已存在具有相同键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象”

在我的 MSSQL 数据库中,我只有一条记录。

var v = db.Envelopes.Find(model.ReportDate, model.Service);
if (v == null)
{
db.Envelopes.Add(model);
db.SaveChanges();
ViewBag.status = "Record Add successfully";
ModelState.Clear();
}
else
{
db.Entry(model).State = EntityState.Modified;
db.SaveChanges();
}

如何修复此错误消息?

最佳答案

正如 @anon 所提到的,一旦使用相同的 key 加载实体,您就无法附加模型。更改必须应用于附加实体。而不是这个:

db.Entry(model).State = EntityState.Modified;

使用这个:

db.Entry(v).CurrentValues.SetValues(model);

关于entity-framework - ObjectStateManager 中已存在具有相同键的对象。 ObjectStateManager 无法跟踪具有相同键的多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5672255/

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