0

これに関連するSEに関する投稿をたくさん見ましたが、満足のいく質問に答えたものはありません。(実際のコード例で)これに答える投稿がある場合は、その方向に私を向けてください。

オブジェクトを保存するときに、ログに情報を書き込む必要があります。元の値と新しい値を知る必要があります。これは親オブジェクトにとって非常に簡単であり、変更された子オブジェクトの新しい値を取得することもかなり簡単です。課題は、子オブジェクトの元の値を取得することです。

たとえば、ユーザーはドロップダウンリストを介して子オブジェクトを変更します。これにより、親の外部キーの値が変更されます。保存するときは、外部キーの値ではなく、変更されたエンティティのテキストによる説明(ToString()値またはその他の値)をログに書き込む必要があります。

ObjectStateEntryには親の現在の値と元の値が含まれていますが、変更された子オブジェクトの現在の値と元の値を取得するにはどうすればよいですか?

これは可能であるはずのことのようですが、達成するのが非常に難しいか、Microsoftの設計チームによって見落とされています。

助けてくれてありがとう。

4

1 に答える 1

0

あなたがいつもそれを得るのと同じ方法:あなたはそれを調べます。あなたの場合、「子オブジェクト」はDBからロードされないかもしれないことを覚えておいてください。「親」のFK値を変更する前に、これを行う必要はありません。

「子オブジェクト」自体を実際に変更したようには聞こえません。むしろ、の子オブジェクトを指すように「親」を変更しただけです。

この場合、Context.GetObjectByKey()を使用して、元のFK値に基づいてオブジェクトをプルします。これにより、ロードされている場合はメモリから、ロードされていない場合はDBから取得されます。

于 2011-06-16T14:43:19.540 に答える