繁体   English   中英

如何在不获取EF6中相关实体的情况下操纵关系?

[英]How to manipulate relations without fetching the related entities in EF6?

在EntityFramework 6中是否可以在不实际获取相关实体的情况下添加/删除相关实体?

我正在尝试:

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

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

附加类型为“ EntityB”的实体失败,因为相同类型的另一个实体已经具有相同的主键值。 如果图形中的任何实体具有相互冲突的键值,则使用“附加”方法或将实体的状态设置为“不变”或“修改”时,可能会发生这种情况。 这可能是因为某些实体是新实体,尚未收到数据库生成的键值。 在这种情况下,请使用“添加”方法或“已添加”实体状态来跟踪图形,然后根据需要将非新实体的状态设置为“未更改”或“已修改”。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM