0

私は4つのステップからウィザードに似たウェブサイトを持っています。このサイトは、asp.netWebフォームによって実装されています。ウィザードは、ビルドしてオブジェクトを作成し、それをDBに追加しようとします。オブジェクトグラフは次のとおりです。

class A { B bObject ; C cObject ; D dObject}
class B {} ; class C{}; class D{};

オブジェクトb、c、dは、ウィザードの手順でデータベースからフェッチされ、Aに入力されます。ご存知のように、b、c、dは、さまざまなコンテキストによってDBからフェッチされます。AをDBに保存する最後のステップに到達すると、コンテキストはb、c、dを新しいオブジェクトとして認識し、変更されていないだけでなく、異なるコンテキストからのものであるため、それらをリンクするだけです。

この問題を解決するためのクリーンな方法を作るための提案はありますか?

ポストパックが原因で発生したさまざまなコンテキスト。

4

1 に答える 1

1

これは、最良の答えが「それをしないでください!」である場合の1つです。

これを処理する1つの方法は、ウィザードの手順でユーザーからデータベーステーブルを作成するために必要なすべてのデータを収集し、データをセッション状態で保存することです。ウィザードの最後のステップが実行された場合にのみ、セッション状態からデータを取得し、それを使用してEFエンティティを作成し、変更をすべて単一のコンテキストに保存します。

別の方法は、オブジェクトグラフをEFオブジェクトとして保存することです(まだセッション状態のままです)が、ウィザードの最後のステップで、コンテキストを開き、Attachメソッドを使用してオブジェクトを現在のコンテキストにアタッチします。繰り返しますが、これは単一のコンテキストを使用します。

于 2012-12-20T22:53:18.380 に答える