在SaveChanges之后发送电子邮件

时间:2012-05-25 02:57:28

标签: entity-framework entity-framework-4 entity-framework-4.1

我试图使用实体框架作为dao将我的应用程序封装到三个层中。 但我觉得这是不可能的! 所以,我开始在控制器中使用我的DbSet并做类似的事情:

var product = new Product();
product.Name = "product name";
db.Product.Add(product);
db.SaveChanges();

但是现在我没有BL层,所以,如何设置观察者在SaveChanges()之后发送电子邮件?

1 个答案:

答案 0 :(得分:0)

您可以覆盖DBContext上的saveChanegs

 public class YourDbContext:DBContext
    {

       public override int SaveChanges(){
         foreach(var entry in ChangeTracker.Entries())
         {
           var entity = entry.Entity;
           if (entity is Entity1 or entity is Entity2)
           {
             //send email
           }
         }
         base.SaveChanges();
      }

   }

但是在DBContext中执行它并不是一个好主意,因为这不是DbContext应该做的事情。发送电子邮件涉及一些业务逻辑,如果您可以在业务层而不是数据访问逻辑中使用它,那就更好了。