2010-12-03 4 views
1

エンティティを保存するときにOnSaveChanges()を実装しています。SavingChanges上のエンティティ内でコレクションが変更されたことを検出するにはどうすればよいですか?

変更されたエンティティのすべてのプロパティを見つけることは別として、変更されたエンティティ内のコレクションのすべてのプロパティを調べるにはどうすればよいですか?これらのアドレスのいずれかが、私はそれを検出しない方法を変更した場合

EG お客様は、今すぐプロパティ

public List<Address>AddressList {get;set;} 

を持っていますか?私は、エンティティが持つかもしれないのコレクションへのすべての変更を見つける必要があるエンティティへの変更から離れて言ったように

私はすべてのObjectStateEntryを検出するために、以下を使用していますが、今

IEnumerable<ObjectStateEntry> changes = 
      stateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Deleted); 

を変更しました。

あなたはどのようにしますか?

答えて

2

SaveChanges()を呼び出す前にObjectContext.DetectChanges()を呼び出す必要があります。これを行わないと、SavingChangesメソッドの呼び出し時に、コレクションのアイテムがGetObjectStateEntriesに含められません。

+0

あなたはこれが行われた例/リンクを知っていますか? – user9969

+0

いいえ - 私自身のコードでのみ。 – Pedro