0

エンティティフレームワークをdaoとして使用して、アプリケーションを3つのレイヤーにカプセル化しようとしていました。でも無理だと思います!! そこで、コントローラーでDbSetを使い始め、次のようなことを行います。

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

しかし、今はBLレイヤーがないので、SaveChanges()の後に電子メールを送信するようにオブザーバーを設定するにはどうすればよいですか?

4

1 に答える 1

0

saveChanegsDBContext でオーバーライドできます

 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 に答える