ストアド プロシージャにすべてのビジネス ロジックを備えた CRUD を多用する ASP.NET アプリケーションがあります。
例として、最大 500 行の長さで、複数のテーブルと UDF を参照する大量の条件付きロジックを含む UPDATE ストアド プロシージャがあります。proc は、更新されるフィールド名と新しい値を受け取り、一連の宣言された変数を設定し、一連の検証を行い、更新を行う動的 SQL ステートメントを作成します。一度サイズがすべてに収まります。大きくて紛らわしいです。
ビジネス ロジックを .NET 側に移動して、管理/更新、テスト、およびソース管理を容易にしたいと考えています。
私の質問はこれです: このビジネス ロジックはどこに行くべきですか?
「Factory」というプロパティを持つ PurchaseOrder オブジェクトがあるとします。工場が変更された場合、割り当てられた新しい工場が PurchaseOrder にある製品を製造していること、価格が設定されていること、その工場に基づいて要求された最小数量があることなどを確認する必要があります。これらすべての検証には、データベース。
PurchaseOrder オブジェクトの Factory セッターに、汎用データ アクセス オブジェクトへの複数の呼び出しを行う「isFactoryValid」メソッド/プロパティを介してデータ検証を行う責任を持たせ、そうであれば更新を行う必要がありますか?
それとも、PurchaseOrder 関連のデータ アクセスのみを処理する、PurchaseOrder/Database 'proxy' オブジェクトを作成しますか。この場合、PurchaseOrder の setter によって呼び出される「isFactoryValid」メソッドをプロキシに配置し、次にプロキシの update メソッドを呼び出しますか?
これらすべての余分な呼び出しでデータベースへのトラフィックが増加することを心配する必要があるかどうかを判断するにはどうすればよいですか?