2011-12-27 17 views
0

エンティティが追加されるたびに、新しく追加されたエンティティの主キーIDが必要なプロセスがあります。 SaveChanges()メソッドをDbContextにオーバーライドし、ChangeTrackerを見ましたが、新しく追加されたエンティティを取得する動的な方法はありません。そうする良い方法はありますか?新しく追加されたエンティティの取得後にSaveChanges?

答えて

3

新しいエンティティの変更トラッカーを照会します。

public override int SaveChanges() 
{ 
    var newEntities = ChangeTracker.Entries() 
         .Where(entry => entry.State == EntityState.Added) 
         .Select(entry => entry.Entity).ToList(); 

    var count = base.SaveChanges(); 

    // do something with newEntities 

    return count; 
} 
1

SaveChangesをオーバーライドし、実際の保存に先立って追加状態のエンティティを収集することはできますが、それはAFAIKになります。

+0

残念ながら、エンティティはこの時点で主キー値を持っていません。 – grefly

+1

私は分かりません。 Erangaの例で分かるように、追加されたエンティティを保存してから、保存した後に何かを実行します。データベースにプライマリキー値が割り当てられている場合は、同じエンティティが更新され、キーがあります。 – Ocelot20

+0

ありがとうございます。 – grefly

関連する問題