0

我试图使用实体框架作为 dao 将我的应用程序封装成三层。但我认为这是不可能的!因此,我开始在控制器中使用我的 DbSet 并执行以下操作:

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

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

4

1 回答 1

0

你可以覆盖saveChanegs你的 DBContext

 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 应该做的。发送电子邮件涉及一些业务逻辑,如果您可以将其放在业务层而不是数据访问逻辑中,那就更好了。

于 2012-05-25T03:32:12.253 回答