c# - 撤消 DbContext.Add()

标签 c# .net entity-framework dbcontext undo

我遇到了问题,我已使用 _db.Article.Add(artícle) 将实体添加到我的 DbContext,但想在执行 _db 之前撤消此操作。保存更改

我还没有找到任何东西,但我尝试使用_db.ChangeTracker,遗憾的是还没有弄清楚。此外 _db.Entry(article).State = EntityState.Deleted_db.Article.Remove(article) 也不起作用,因为该实体尚未在数据库中...

是否有可能将其从更改列表中删除?

最佳答案

您可以利用 DbContext.IObjectContextAdapter.ObjectContext 的显式实现到达底层 ObjectContextDetach您的实体,例如;

((IObjectContextAdapter)_db).ObjectContext.Detach(article);

语法上更简洁的方法是使用方法扩展 DbContext;

public class MyDbContext : DbContext 
{
    public void Detach(object entity) { ObjectContext.Detach(entity); }
}

...这将允许你简单地做;

_db.Detach(article);

关于c# - 撤消 DbContext.Add(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17037424/

相关文章:

C# nth-child 逻辑测试

c# - 避免竞争条件?运算符(operator)

c# - 在C#中,类或函数前方括号中写的是什么?

c# - 对 ASP.NET 实体和身份使用 1 个连接字符串

c# - 如何使用 Entity Framework 重命名数据库和文件

c# - WCF - 禁用客户端应用程序的浏览器身份验证

c# - 使用 linq 查询输出列表/其他数据结构

.net - Log4net 不会登录到控制台(WinForms 应用程序)

.net - 如何使用 WebRequest 仅下载 header

c# - 具有多个where参数的linq to sql查询