实体拦截所有数据库更改

时间:2016-02-15 08:48:08

标签: c# asp.net entity-framework

在现有的Entity应用程序中,我需要在每次更改数据库时调用远程API。

我想知道我是否可以以某种方式挂钩实体中的事件或类来编写我的代码。类似下面的Psuedo代码

if (Table == "Business") Api.Call

1 个答案:

答案 0 :(得分:2)

您可以将context.SaveChanges()包装在存储库中的方法调用中,然后在那里处理更改。

using System.Data.Entity.Infrastructure;

//may be wrong syntax
public bool SaveAllChanges()
{
   var Changes = context.ChangeTracker.Entries()
                        .Where(e => e.State == EntityState.Modified | e.State == EntityState.Added | e.State ...);
   foreach(var change in Changes)
   {
     //check if you need to call your API
   }

   return context.SaveChanges() > 0 
}