2009-04-14 9 views
0

データ入力の繰り返しを支援するため、新しいデータを追加する際に以前のプロパティの多くが記憶されているシステムを実装しようとしています。ORM - C#でDBオブジェクトのデフォルト値を保存/復元する

Properties.Settings.Default.MySetting機能を使用することは可能ですか、このようなことを行うためのより良い方法がありますか?

+0

奇妙なことに、ORMはあなたが求めていることと何が関係していますか? – lomaxx

+0

非常に少ない。私はちょうどこれを行うためのいくつかの一般的に受け入れられた方法があるかもしれないと思った。 – Damien

答えて

0

前のオブジェクトの(深い)コピーを作成し、それを次のオブジェクトとして使用して、変更されたフィールドを上書きすることはできませんでしたか?このようにして、フィールドはユーザーが最後に入力したもの、ユーザーごとに個別化されたフィールド、フィールドが変更されたときに更新されます。

ユーザーごとに入力された最後のものを覚えておく方法がある場合は、セッション間でこれを保存することもできます。

OPのコメント:

関係が関与しているとき残念なことに、オブジェクトのディープコピーを作成することのObjectContextを台無しに。リレーションシップを持つ新しいオブジェクトには、作成された新しいリレーショナルオブジェクトまたは既存のオブジェクトがデータベースから照会される必要があります。

だから?リレーションシップが別のエンティティ(データベース内の外部キー)に対するものであれば、それは用途と関係であり、そのまま保持します。属性の場合はコピーします。

たとえば、あなたのフォームが従業員のデータ入力であるとします。その場合、「非課税」または「非課税」(超過取得)のいずれかの従業員タイプのドロップダウンがあります。データベースからemployeeTypeの値を取得し、次の従業員が最後に入力した従業員と同じ値を持つようにして、データ入力の人のキーストロークを保存します。したがって、深いコピーはコピーされた従業員を同じデータベースemployeeTypeに関連付けるだけです。

しかし、属性データ(名前など)については、コピーを作成します。

+0

残念ながら、オブジェクトのディープコピーを作成すると、関係が関与するときにオブジェクトコンテキストが崩れます。 リレーションシップを持つ新しいオブジェクトには、作成された新しいリレーショナルオブジェクトまたは既存のオブジェクトがデータベースから照会される必要があります。 – Damien

-1

これは達成しようとしていることによって異なります。 MySetting機能を使用することの良い点は、次回のアプリケーション終了時に「最近の」プロパティを保持できることです。

私はこれがwinformsアプリケーションであると仮定しているので、ハッシュテーブルの各バッキングオブジェクトの最後の保存のキャッシュされたインスタンスをどこかに保持しておき、新しいフォームを作成するときに、ハッシュテーブルに追加し、必要なプロパティをフォームの新しいインスタンスにバインドします。

ハッシュテーブル全体をシリアル化してMySettingsオブジェクトに永続化することができます。この場合、ユーザーがアプリケーションにアクセスするたびに使用できます。

関連する問題