1

ウィザードのように複数のフォーム/ページでレコードを更新しています。各フォームの後にデータベースに保存する必要があります。ただし、これは一部の記録にすぎません。EF POCO モデルにはすべてのプロパティ (フィールド) のすべてのデータ注釈があるため、この部分的なレコードを保存するとエラーが発生するのではないかと思います。

したがって、これに対する最も簡単な解決策がわかりません。

私が考えたいくつかのオプション:

a) 各フォームのビュー モデルを作成します。EF ドメイン モデルではなくビュー モデルのデータ注釈。

b) SaveAll ではなく特定のプロパティをビューのコントローラーに保存することで、関連しないプロパティの検証をトリガーしません。

c) 他の解決策...??

よろしくお願いします。

4

1 に答える 1

1

オプション1.検証はおそらく(特にあなたの場合)とにかくビューモデルに属します。部分的に入力されたレコードを持つことが技術的に (DB 制約に関して) 有効である場合、これは検証がビューに属していることのさらなる証拠です。

さらに、検証をビューに抽象化することで、他の消費アプリケーションが独自の検証ロジックを持つことができます。

追加の考え:

ただし、補足として、あなたが行っているようにデータを部分的に保存するのは少し厄介であり、本当に正当な理由がない限り (最初はそうだと思っていました)、そのデータを保持することを検討してください。他の場所 (セッション) に保存し、ウィザードの最後に一緒に永続化します。

これにより、データの整合性を向上させるために、より適切で適切な DB 制約が可能になります。たとえば、レコード全体で null 名を許可してはならない場合、ウィザードのコミットを分割するために null を許可すると、長期的な頭痛の種になる可能性があります。

于 2012-11-14T01:18:49.887 に答える