0

EF STE DTO から OriginalValues を取得できません。

var _Item = new MyClass();
_Item.StartTracking();    // ChangeTracker.OriginalValues.Count = 0
_Item.Name = "Jerry";     // ChangeTracker.OriginalValues.Count = 0
_Item.Name = "Bob";       // ChangeTracker.OriginalValues.Count = 0
_Item.AcceptChanges();    // ChangeTracker.OriginalValues.Count = 0
_Item.Name = "Sam";       // ChangeTracker.OriginalValues.Count = 0

私は何か間違ったことをしていますか?

ありがとう

4

1 に答える 1

0

全体ChangeTrackerはアプリケーションの一部です。これは、STE T4 テンプレートによって生成されたクラスであるため、何をすべきかを簡単に追跡できOriginalValuesます。

OriginalValues追跡されたエンティティのナビゲーション プロパティを変更する場合、元の読み込まれた外部キーと関連エンティティを格納するために使用されます。これらは一般的なプロパティには使用されませんが、必要に応じてテンプレートを変更し、これらのプロパティにも変更トラッカーを使用できます。

編集:

保存されていないため、共通プロパティの元の値は取得されません(テンプレートを理解しているため)。SQL プロファイラーにも表示されます。50 個のプロパティを持つエンティティの単一のスカラー プロパティを変更し、新しいコンテキストに変更を適用すると、50 個のプロパティすべてで更新が作成されます (添付エンティティの標準的な変更追跡では、変更されたプロパティのみが渡されます)。

共通プロパティの元の値を知りたい場合は、そのような機能をサポートするようにテンプレートを変更する必要があります。

于 2011-09-17T10:05:58.380 に答える