c# - EF 是否有一个事件系统,您可以在其中修改模型,然后再保存它?

标签 c# asp.net-mvc entity-framework

我正在使用 EF 6。

我正在寻找的是我所有的模型,我想在模型创建或更新之前对其进行修改。

有没有我可以 Hook 的事件来简化这一切?

最佳答案

如果您使用的是 DbContext API,那么您可以覆盖 SaveChanges 方法,您可以在其中使用 ChangeTracker 来获取被跟踪的实体和根据返回的 DbEntry.State 属性 ( EntityState enum ) 执行自定义逻辑:

public class MyContext : DbContext
{
    public override int SaveChanges()
    {
        foreach (var entry in ChangeTracker.Entries<YourEntity>())
        {
            if (entry.State == EntityState.Added)
            {
               // do something with entry.Entity
            }
            if (entry.State == EntityState.Modified)
            {
               // do something with entry.Entity
            }
            // etc.
        }
        return base.SaveChanges();
    }
}

关于c# - EF 是否有一个事件系统,您可以在其中修改模型,然后再保存它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20732207/

相关文章:

具有并行支持的 C# 模拟框架

c# - Linq to Entities 与 Linq to Objects 性能问题

c# - Entity framework如何获取两年之间的所有数据?

C# - 更改函数内的数组值

c# - 用双引号将 ASP.NET 控件括起来

asp.net-mvc - 属性级验证错误阻碍了类级验证的验证

javascript - 在 ASP.NET MVC : All possible ways to call Controller Action Method from a Razor View

asp.net-mvc - ASP.NET MVC和EF代码优先内存使用情况

c# - 如何使用 simple.odata.client 扩展分层数据

c# - asp.net mvc 在 ActionResult 中多次循环后什么都不做