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

时间:2014-11-27 17:10:25

标签: c# entity-framework entity-framework-6

在EntityFramework 6中是否可以添加/删除相关实体而无需实际获取相关实体?

我在尝试:

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

具有Id的实体已存在于DB中。我的尝试失败,出现以下异常:

  

附加' EntityB'类型的实体失败   因为同一类型的另一个实体已经具有相同的主要实体   核心价值。使用'附加'方法或设置   一个实体的状态为“未变”'或者'修改'如果有任何实体   图表具有冲突的键值。这可能是因为一些   实体是新的,尚未收到数据库生成的密钥   值。在这种情况下,请使用'添加'方法或“添加”#39;实体国家   跟踪图形,然后将非新实体的状态设置为   '不变'或者'修改'酌情。

1 个答案:

答案 0 :(得分:2)

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