こんにちはすべて私たちは、SqlCommandオブジェクトのCommandTypeプロパティに、TableDirect、Text、およびStoredProcedureまたは「SP」の3つのオプションがあることを知っています。
「SP」には他の2つのオプションよりも利点があることを知っているので、私の質問は、自分のシステムで多くのSPを作成するかどうかです。
または、SPを作成する代わりに、どのようなソリューションがありますか?
ありがとうございました
こんにちはすべて私たちは、SqlCommandオブジェクトのCommandTypeプロパティに、TableDirect、Text、およびStoredProcedureまたは「SP」の3つのオプションがあることを知っています。
「SP」には他の2つのオプションよりも利点があることを知っているので、私の質問は、自分のシステムで多くのSPを作成するかどうかです。
または、SPを作成する代わりに、どのようなソリューションがありますか?
ありがとうございました
すべての本番システムで、SPと純粋なADO.NETCoreを使用してデータにアクセスしました。システムの範囲は、100〜300のテーブルと約500〜1000のストアドプロシージャです。
ほとんどのデータアクセスコードは、ツールを使用して生成されます。ソースコードとサンプルアプリケーションの使用/変更に興味がある場合は、ブログに投稿しました。このツールは、約750のストアドプロシージャを含むデータベースに対して、約20〜25秒で100,000行を超えるコードを生成できます。
もちろん、データベース、データモデリング/設計、およびストアドプロシージャに精通していない場合は、Linq to SQLまたはEF4(Entity Frameworkバージョン4)などを使用することをお勧めします。ブルートフォースのパフォーマンスが必要な場合は、ADO.NETコアとストアドプロシージャが最適です。
ストアドプロシージャを作成する以外に、オブジェクトリレーショナルマッピングを使用できます
そのような:
linq to sql
Nhibernate
Entity Framework
あなたに合った最良の方法を選択してください。
Re:最初の質問 ストアドプロシージャの道を進むと、プロジェクトの存続期間中、ストアドプロシージャの数が増え続けます。基本的なCRUD操作以外では、各ストアドプロシージャは特定の問題に緊密に結び付けられ、再利用性が低い傾向があります。経験則では、各データテーブル(州や国のリストなどの参照テーブルまたはコードテーブルを除く)に対して8〜12個のストアドプロシージャを期待できます。
procの数が非常に多いため、命名規則が非常に重要になるため、400〜500のprocのリスト全体を常に視覚的に再スキャンしなくても、何でも見つけることができます。
Re:2番目の質問 C#またはVB.NET内の文字列内に記述されたSQLで発生する醜いことがたくさんあります。エラーが発生しやすい、醜いなどです。
Linq、nHybernateなど多くの存在がありますが、「コンセプトカウント」(生産性を高めるために学ぶ必要のあるものの数)は、C#で優れたストアドプロシージャエグゼキュータを作成する方法を学ぶよりもはるかに多くなります。
ストアドプロシージャは、ビジネスロジックではなく、データベース機能のためだけに作成されるようにしています。
少しあいまいなデータベースアーキテクチャがあり、それを呼び出し元から隠したい場合は、データベース機能です。
それが単に私のアプリケーションが追加または更新する方法である場合、またはそれらが行う検証の量などである場合、それはビジネスロジックです。