0

テーブルのデータを更新し、その更新時に、最初のテーブルと同じフィールドを持つ他の履歴テーブルに日付を挿入します。

私のコードは次のとおりです。

 public void SaveChanges()
    {
      objectdateContext.SaveChanges();

      saveInHistoryTable(); // here how i can pass the current entity.
    }

 public void saveInHistoryTable(FirstTable f)
 {
    SecondTable s = new SecondTable();
    s.id = f.id;
    s.Name = f.Name;
    objectdateContext.Insert(s);
}

よろしくお願いします。

4

2 に答える 2

0

saveInHistoryTable(); // here how i can pass the current entity.

実体はこの時点でとうの昔になくなっています。このメソッドを呼び出して、発生するメソッドで変更が行われた後にエンティティを渡す必要があります。

これらの問題をさまざまな方法に分ける必要があります。正直なところ、SaveChanges()「現在のエンティティ」のバックアップを作成することを含めるべきではありません。さらに、エンティティが 1 つだけ変更されたことをどのように確認できますか? 変更されたのがオブジェクト グラフである場合、1 つのオブジェクトだけを渡してグラフ全体をバックアップすることは不可能です。

于 2012-10-14T21:10:25.110 に答える
0

コンテキストで SaveChanges() をオーバーロードし、ChangeTracker の各オブジェクトに対して保存を行うことができます。

以前に使用した例を次に示します (これは DbContext の場合で、オブジェクト コンテキストがある場合は少し異なります)。

  public override int SaveChanges()
  {
     if( ChangeTracker.Entries().Any( e => e.State != EntityState.Unchanged ) )
     {
        //insert the entry into the History table
     }

     return base.SaveChanges();
  }
于 2012-10-14T21:25:26.753 に答える