私はストアドプロシージャ内のすべてのビジネスロジックを持つCRUD重いASP.NETアプリケーションを使用しています。データベースから移動するときにビジネスロジックを移動する場所
たとえば、〜500行の長さのUPDATEストアドプロシージャがあり、多数の条件付きロジックを含み、複数のテーブル& UDFを参照します。 procは更新されたフィールド名と新しい値を取り込み、宣言された変数の束を設定し、一連の検証を行い、更新を行うための動的SQL文を作成します。サイズが一度合う。それは大きくて混乱します。
ビジネスロジックを.NET側に移行して、ソース管理下での管理/更新、テスト、および配置を容易にしたいと考えています。
私の質問は次のとおりです。このビジネスロジックはどこに行くべきですか?
「Factory」というプロパティを持つPurchaseOrderオブジェクトがあります。工場が変更された場合、割り当てられた新しい工場がPurchaseOrder上にあること、価格が設定されていること、その工場に基づいて要求された最小数量があることなどを確認する必要があります。データベース。
PurchaseOrderオブジェクトのFactoryセッターは、 'isFactoryValid'メソッド/プロパティを使用してデータ検証を行い、汎用データアクセスオブジェクトへの複数の呼び出しを行い、それがあれば更新を行う必要がありますか?
またはPurchaseOrder関連のデータアクセスだけを処理するPurchaseOrder/Database 'proxy'オブジェクトを作成しますか?この場合、PurchaseOrderのセッターによって呼び出されたプロキシに「isFactoryValid」メソッドがあり、プロキシの更新メソッドが呼び出されますか?
これらの余分なコールのすべてでデータベースへのトラフィックを増やすことを心配する必要はありません。それを行うには
ただし、ビジネスロジックをデータベースから移動すると、データベースへのコール(「チャット」)が増加する可能性があります – RobS