0

更新や削除を行わない Entity Framework を使用してデータベース モデルを開発する方法を見つけようとしています。ビジネス要件では、分析上の理由から、システム内の各レコードに加えられたすべての変更の完全な履歴が必要です。代わりに、データベースに新しいレコードを挿入して常に変更したいと考えています。

Entity Frameworkにそれをさせるきれいな方法はありますか? それとも、この種の動作を取得するために多くのフープをジャンプするつもりですか. 基本的なモデルは非常に単純で、コンストラクターなどのいくつかのものは、議論にあまり追加されないため削除されています。

public class Container
{
  public Guid Id { get; private set; }
  public ICollection<Container> RelatedContainers { get; private set; }
  public ICollection<Item> Items { get; private set; }
}

public class Item
{
  public Guid Id { get; private set; }
  public string Name { get; private set; }
  public string Value { get; private set; }
}
4

1 に答える 1

1

SaveChanges()基本的に、 のメソッドをオーバーライドする必要がありますDbContextEntityState Deletedメソッドで、 orを持ちModified 、 status を設定するすべてのオブジェクトを取得しますUnChanged

public class YourDbContext:DbContext{


  public override int SaveChanges(){
       foreach ( var ent in this.ChangeTracker
                     .Entries()
                     .Where(p =>p.State == System.Data.EntityState.Deleted             
                                     p.State == System.Data.EntityState.Modified))
        {

          ent.State   =System.Data.EntityState.Unchanged;
        }

  }

}
于 2012-08-23T03:52:57.920 に答える