如何在不提取 EF6 中的相关实体的情况下操作关系

本文关键字:实体 情况下 关系 操作 提取 EF6 | 更新日期: 2023-09-27 18:32:20

是否可以

在实体框架 6 中添加/删除相关实体而无需实际获取相关实体?

我正在尝试:

var a = new EntityA()
a.B = new EntityB { Id = 2 }; 
db.Entry(a).State = EntityState.Added;
db.SaveChanges();

数据库中已存在具有 ID 的实体。我的尝试失败,出现以下异常:

附加类型为"实体 B"的实体失败 因为同一类型的另一个实体已经具有相同的主实体 键值。使用"附加"方法或设置时可能会发生这种情况 实体的状态为"未更改"或"已修改"(如果 图形具有冲突的键值。这可能是因为一些 实体是新的,尚未收到数据库生成的密钥 值。在这种情况下,请使用"添加"方法或"已添加"实体状态 跟踪图形,然后将非新实体的状态设置为 "未更改"或"修改"(视情况而定)。

如何在不提取 EF6 中的相关实体的情况下操作关系

要解决确切的错误,您需要将新B实体的db.Entry( b ).State设置为Unchanged(您的代码导致Added

相关文章: