【发布时间】:2014-11-27 17:10:24
【问题描述】:
是否可以在 EntityFramework 6 中添加/删除相关实体而不实际获取相关实体?
我在尝试:
var a = new EntityA()
a.B = new EntityB { Id = 2 };
db.Entry(a).State = EntityState.Added;
db.SaveChanges();
ID 的实体已经存在于数据库中。我的尝试失败,但出现以下异常:
附加类型为“EntityB”的实体失败 因为另一个相同类型的实体已经有相同的主 核心价值。使用“附加”方法或设置时可能会发生这种情况 实体的状态为“未更改”或“已修改”,如果存在 该图具有冲突的键值。这可能是因为一些 实体是新的,尚未收到数据库生成的密钥 价值观。在这种情况下,使用“添加”方法或“添加”实体状态 跟踪图,然后将非新实体的状态设置为 “未更改”或“已修改”(视情况而定)。
【问题讨论】:
-
如果您还没有获取相关实体的 ID,您如何知道它?
-
这是一个网络应用程序。我已经在上一个请求中获取了它(当我呈现表单时)。然后我从一个组合中通过 ajax/websockets 收到了它。
-
我自己不需要,但您应该能够将您的骨架
EntityB附加到上下文中。它会获得Unmodified标志,因此EF 应该在您保存更改时保留它。
标签: c# entity-framework entity-framework-6