我试图使用实体框架作为dao将我的应用程序封装到三个层中。 但我觉得这是不可能的! 所以,我开始在控制器中使用我的DbSet并做类似的事情:
var product = new Product();
product.Name = "product name";
db.Product.Add(product);
db.SaveChanges();
但是现在我没有BL层,所以,如何设置观察者在SaveChanges()之后发送电子邮件?
答案 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应该做的事情。发送电子邮件涉及一些业务逻辑,如果您可以在业务层而不是数据访问逻辑中使用它,那就更好了。