【发布时间】:2023-03-14 02:02:01
【问题描述】:
我试图在我的主对象中插入对象引用,但如果我不使用它以前管理的对象,EntityFramework 会抱怨。我只是想在创建对象时避免依赖 dbContext。
简化示例:
class Movie {
public ApplicationUser Owner { get;set; }
}
var myMovie = db.Movies.FirstOrDefault(m, m => m.Id = 1);
myMovie.Owner = new ApplicationUser { Id = 2 };
// I have to attach or change its state, otherwise, EF will complain the object is not complete
db.Entry(myMovie.Owner).State = EntityState.Unchanged;
不知何故,如果上下文先前已加载相同的 ApplicationUser,我会收到此错误:
保存或接受更改失败,因为多个“ApplicationUser”类型的实体具有相同的主键值。确保显式设置的主键值是唯一的。确保在数据库和实体框架模型中正确配置了数据库生成的主键。使用实体设计器进行数据库优先/模型优先配置。使用“HasDatabaseGeneratedOption”流式 API 或“DatabaseGeneratedAttribute”进行 Code First 配置。
如何避免这个问题?最理想的情况是,我不想告诉新对象的状态。
【问题讨论】:
-
我遇到了同样的异常
标签: c# entity-framework