ユーザーが繰り返しデータを入力するのを支援するために、新しいデータを追加するときに以前のプロパティの多くが記憶されるシステムを実装しようとしています。
Properties.Settings.Default.MySetting 機能を使用することは可能ですか、またはこの種のことを行うためのより良い方法はありますか?
ユーザーが繰り返しデータを入力するのを支援するために、新しいデータを追加するときに以前のプロパティの多くが記憶されるシステムを実装しようとしています。
Properties.Settings.Default.MySetting 機能を使用することは可能ですか、またはこの種のことを行うためのより良い方法はありますか?
前のオブジェクトの (ディープ) コピーを作成し、それを次のオブジェクトとして使用して、ユーザーが変更されたフィールドを上書きできるようにすることはできませんか? このようにして、フィールドはユーザーが最後に入力したものになり、ユーザーごとに個別化され、それらのフィールドを変更すると更新されます。
ユーザーごとに最後に入力した内容を記憶する方法があれば、セッション間でこれを保持することさえできません。
OPコメント:
残念ながら、オブジェクトのディープ コピーを作成すると、関係が関係している場合にオブジェクト コンテキストが台無しになります。リレーションシップを持つ新しいオブジェクトには、新しいリレーショナル オブジェクトを作成するか、データベースから既存のオブジェクトをクエリする必要があります。
そう?リレーションが別のエンティティ (データベース内の外部キー) に対するものである場合、それは uses-a リレーションシップであり、保持するだけです。属性の場合はコピーします。
たとえば、フォームが従業員に関するデータ入力であり、従業員タイプが「免除」(残業なし) または「非免除」(残業あり) のドロップダウンがあるとします。データベースから employeeType の値を取得し、次に入力する従業員に最後に入力した従業員と同じ値を持たせて、データ入力担当者のキーストロークを節約します。したがって、ディープ コピーは、コピーされた従業員を同じデータベースの employeeType に関連付けるだけです。
ただし、属性データ (名前など) については、コピーを作成します。
それはあなたが何を達成しようとしているかによって異なります。MySetting 機能を使用する利点は、次にアプリケーションを閉じたときに "Most Recent" プロパティを保持できることです。
私はこれが winforms アプリケーションであると想定しているので、各バッキング オブジェクトの最後の保存のキャッシュされたインスタンスをどこかのハッシュテーブルに保持し、新しいフォームを作成するときにハッシュテーブルでバッキング オブジェクトを検索し、必要なプロパティをフォームの新しいインスタンスにバインドします。
その後、必要に応じてハッシュテーブル全体をシリアル化して MySettings オブジェクトに永続化し、ユーザーがアプリケーションにアクセスするたびに使用できるようにします。