Entity Framework 4.1 で ASP.Net MVC 3 Web アプリケーションを構築しています。データベースファーストのアプローチを使用しています。
自動生成されたエンティティ オブジェクトを使用するのではなく、POCO クラスを作成するためにADO.NET DbContext Generatorも使用しました。ADO.NET DbContext Generatorを使用すると、エンティティごとに POCO クラスを生成する .tt ファイルと、派生した DbContext クラスを生成する.Context.ttファイル (データのクエリと永続化に使用)。
私のアプリケーションでは、特定のエンティティに対して監査を実行するコードを作成しました。このコードは、作成したオーバーライド SaveChanges()メソッド内で実行されます。次のように、このオーバーライド SaveChanges()メソッドを Context.cs クラス内に配置しましたが、うまく機能します
public partial class LocumEntities : DbContext
{
public LocumEntities()
: base("name=LocumEntities")
{
}
public override int SaveChanges()
{
//Audit Code Executes in Here
return base.SaveChanges();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<Audit> Audits { get; set; }
public DbSet<Form> Forms { get; set; }
//Other DbSets
}
ただし、EDMX ダイアグラムでエンティティを移動または更新してから保存すると、Context.cs クラス内のカスタムSaveChanges()メソッドが削除されます。これが起こらないようにする方法はありますか、またはSaveChanges()メソッドを別の場所に配置する必要がありますか?
誰かアドバイスしてもらえますか?
ありがとう。