【发布时间】:2018-02-07 19:12:26
【问题描述】:
我正在尝试在调用 SaveChanges 之前从上下文中删除实体。
实体是这样添加的
DbContext.Set<T>().Add(new T());
最初我会通过将它们的状态设置为 EntityState.UnChanged 来删除单个项目,如果适用于我的覆盖 DbContext.SaveChanges() 方法。
但是当我有多个我不想保留的实体时,当第二个实体的状态更改为 UnChanged 时,我收到错误消息 - “保存或接受更改失败,因为多个实体具有相同的主键值” -显然它们的 ID 都是 0,因为它们还没有被保存。
当我尝试时
DbContext.Set<T>().Remove(entity);
它只是不会删除实体
我知道将 EntityState 设置为 UnChanged 是我多年前发现的一个小技巧,现在它又回来咬我了!
如果有人能告诉我如何在保存之前从 DbContext 中删除未保存的实体,我将不胜感激。
最好的问候
兰斯
【问题讨论】:
-
我认为将实体状态设置为 Detached 会更好。
-
您可以在保存更改的上下文中查看 ChangeTracker,但它回避了您缺少 POCO 上的
属性的事实。
标签: c# entity-framework