C# EF是否有一个事件系统,您可以在保存模型之前对其进行修改?

C# EF是否有一个事件系统,您可以在保存模型之前对其进行修改?,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我用的是EF6 我要寻找的是,对于我所有的模型,我想在创建或更新之前修改模型 是否有一个事件可以让这变得简单?如果您使用的是DbContextAPI,那么您可以覆盖SaveChanges方法,在该方法中,您可以使用ChangeTracker获取跟踪的实体,并根据返回的DbEntry.State属性()执行自定义逻辑: 公共类MyContext:DbContext { 公共覆盖int SaveChanges() { foreach(ChangeTracker.Entries()中的var条目) {

我用的是EF6

我要寻找的是,对于我所有的模型,我想在创建或更新之前修改模型


是否有一个事件可以让这变得简单?

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

公共类MyContext:DbContext
{
公共覆盖int SaveChanges()
{
foreach(ChangeTracker.Entries()中的var条目)
{
if(entry.State==EntityState.Added)
{
//对entry.Entity执行某些操作
}
if(entry.State==EntityState.Modified)
{
//对entry.Entity执行某些操作
}
//等等。
}
返回base.SaveChanges();
}
}

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

公共类MyContext:DbContext
{
公共覆盖int SaveChanges()
{
foreach(ChangeTracker.Entries()中的var条目)
{
if(entry.State==EntityState.Added)
{
//对entry.Entity执行某些操作
}
if(entry.State==EntityState.Modified)
{
//对entry.Entity执行某些操作
}
//等等。
}
返回base.SaveChanges();
}
}

不要忘记覆盖这两种方法-
SaveChanges
savechangesync
。不要忘记覆盖这两种方法-
SaveChanges
savechangesync
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();
    }
}