私はビジネスルールを処理する最も一般的な方法を理解しようとしていますが、そのルールは必ずしも実行可能ではありません。
フォームはstored_procedure呼び出しによってデータベースに送信されています。現在、ビジネスロジックは、独立したビジネスアプリケーションレイヤではなく、stored_procedureに書き込まれます。ストアドプロシージャは、エラーとエラーレベル(情報、アドバイス、警告、エラー、および致命的)を含むデータセットを返します。C#ASP.NET over-rule非強制的なビジネスルール
情報は、必要なものを更新するためのものです。
アドバイスは、ユーザーが更新/挿入を中止することができますが、デフォルトのアクションは
警告は、ユーザーが更新/挿入を中止することができますが、デフォルトのアクションは
エラーをキャンセルするために通常に関連する、必須のビジネスルールに違反している続けることですデータの整合性を維持し、更新/挿入を強制的にキャンセルしますが、ユーザーは送信中のデータを変更して再試行することができます。
致命的な問題はユーザーが修正できないものです(データベースへの接続が失われ、フォームが入力されたなど)、強制的にトランザクションを中止します。
ここに私がしようとしているものの例があります。
- コード
- を季節コードを設定するためのフォームDescrption
- 開始日
- 終了日
必要な検証の2種類があります。
必須:例えばコードと説明は完了している必要があります。開始日は前の日付でなければなりません。終了日
オプション:開始日と終了日は通常連続しません。つまり、次の季節の開始日は終了日の翌日です。プレヴィオウスのシーズンですが、これは常にそうではありません。ユーザーにエラーが発生している可能性があり、入力したデータが正しいことを確認するよう警告します。彼らが確認したら、私は再提出の検証ルールを無視する必要があります。
私は、ストアドプロシージャの余分なパラメータを無視して、ユーザが問題がOKであると確認した場合にのみ、再提出時に設定されるオプション(情報と警告)を無視すると考えています。エラーと致命的なエラーが発生しても、更新は失敗します。
誰かがより良い選択肢を提案できますか?