0

問題

挿入する新しいエンティティ (「TargetEntity」と呼びます) を開始し、別のエンティティ プロパティ (「TemplateEntity」と呼びます) を使用しています。

TargetEntityの一部のプロパティは、 TemplateEntityプロパティとそのナビゲーション プロパティの値を取得しています。

いくつかの特別なケースでは、TemplateEntity プロパティとナビゲーション プロパティの値を変更する必要があります。たとえば、これが塗りつぶされる TargetEntity であるとします。

TargetEntity
- prop1
- prop2
- prop3

これは、値を持つ TemplateEntity です。

TemplateEntity
- prop1
- NavProp1.prop2
- NavProp2.prop3

次のように TemplateEntity にいくつかの変更を適用したいと思います。

TemplateEntity to be applied
- prop1 * index1
- NavProp1.prop2 * 0
- NavProp2.prop3 *index2

制限と条件

  1. 私はエンティティを扱っていますが、POCO も DTO もありません。多くのネストされたナビゲーション プロパティがあり、そのフラット オブジェクトを作成したり、オフラインのネストされたオブジェクトを複製したりするのは非常に複雑です。

  2. TemplateEntity は多くのメソッドで使用されています。各メソッドには独自のコンテキストがあり、変更を保存します (つまり、ログなど)。

質問

変更を保存し、TemplateEntity のようなエンティティとそのナビゲーションが DB で変更されるのを避けるにはどうすればよいですか?

4

1 に答える 1

0

次の場合を除き、エンティティの更新を作業単位から除外/スキップすることはできません。

  • そのエンティティのグラフの状態を再構成します。これは、エンティティ グラフを走査し、すべてを未変更に設定する必要があることを意味します。
  • そもそもエンティティを作業単位に含めないでください - エンティティ グラフをコンテキストにアタッチしてはなりません - これは通常、シリアライゼーションとデシリアライゼーションによってのみ可能であるオブジェクト グラフのクローン作成につながります (エンティティは で既にこれをサポートしていますDataContractSerializer)。
于 2012-07-25T07:21:00.900 に答える