5

EntityObjectレポートに含めるために、内の変更を読みたい。

例えば:

名前: ビフォーアフター

場所: ビフォーアフター

これを行う一般的な方法はありますか?デフォルトのエンティティクラス生成(POCOではない)でEF4を使用しています。

これらのエンティティはアタッチされるため、変更を追跡する必要があります。IEntityWithChangeTrackerインターフェイスを介してこれを行う手段がわかりません。

ナビゲーションプロパティをトラバースするのは良いことですが、変更されたプリミティブプロパティについてレポートするだけで十分です。

4

2 に答える 2

9

ObjectStateEntryエンティティを取得して、CurrentValuesとの内容を確認できますOriginalValues。これを試してください(テストされていません):

ObjectStateEntry entry = objectContext.ObjectStateManager.GetObjectStateEntry(entity);
foreach (string property in entry.GetModifiedProperties()) {
    object oldValue = entry.OriginalValues[property];
    object newValue = entry.CurrentValues[property];
}

これはナビゲーションプロパティを処理せず、複雑なタイプでどのように機能するかわかりません。

于 2012-08-14T14:06:48.080 に答える
1

Ladislav Mrnka の提案に加えて: 本当に一般的ではありませんが、少なくとも可能な解決策: Code Generation and T4 Text Templates。これにより、モデルの生成時に各エンティティに独自のカスタム ロジックを追加できます。

あなたの場合、必要なトラバース機能を実装して、ナビゲーション プロパティを確認できます。

于 2012-08-14T14:20:35.180 に答える