5

私は.NET 3.5を使用しており、他の誰かが行った古いコードを見て、セキュリティを追加して更新しようとしています。

Web フォーム プロジェクトでデータにアクセスするためのベスト プラクティスは何ですか?

現在、次のように、SQL パラメーター化を使用するようにコードを変更しています。

using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ConfigurationManager.AppSettings["defaultConnection"]].ConnectionString))
{
    using (SqlCommand myCommand = new SqlCommand(sql.ToString(), conn))
    {
        myCommand.Parameters.AddWithValue("search1", mySearchVar);
        ...

SQL のパラメーター化が重要であることは知っていますが、他の人がストアド プロシージャを使用しているのを見たことがありますか? それらは他の方法ですか、従うべきベストプラクティスですか?

4

3 に答える 3

7

小さなリファクタリングだけでなく、データアクセス層を書き直す時間がある場合は、ORMを使用してください。

NHibernate

エンティティフレームワーク

Dapper.NET(Stackoverflow ORM)

BLToolkit

于 2012-11-21T20:27:09.377 に答える
4

ADO.NET を使用しても問題はありません。これは、.NET のすべての ORM ソリューションを推進するものです。

それでも、.NET 開発者は大挙して ORM の時流に乗ろうと動いているようです。ORM は、データ アクセス ツールボックスの多くのツールの 1 つにすぎません。

2000 年代初頭、ORM は Java の世界を席巻しました。ストア プロシージャは敬遠されました。それはORMか何もありませんでした。半年後、Java 開発者は、最良のソリューションは ORM とストアド プロシージャの両方を使用し、それぞれに長所があることに気付きました。

仕事に最適なツールを使用してください。ORM は、アプリケーションからの CRUD の多くを自動化できます。ストアド プロシージャは、抽象化の追加、セキュリティ レイヤーの追加、高性能が必要な領域の最適化に適しています。

作業に最適なツールを選択してください。

于 2012-11-21T21:23:51.257 に答える
-1

Entity Framework は 1 つの「ベスト プラクティス」であり、Microsoft が最も推し進めているものです。しかし、最適なデータ アクセス方法はありません。

EF やその他の ORM のパフォーマンスに関するいくつかの悪い経験の後、私は通常それらを完全に避け、データ アクセス コードを手作業で作成するか、コード生成ツールを使用して特定のアプリケーション用に作成されたコードを出力します。

一方、多くの悪い慣行があり、パラメーター化に移行することで重要なものを回避しています。

個人的には、ストアド プロシージャを完全に使用する場合 (ストアド プロシージャ外でのデータ変更を防止する場合) を除き、最近ではストアド プロシージャの意味がわかりません。その場合、データに可能な変更の種類について、ある程度の安心感を与えることができます。

したがって、これは実際には答えではありません-実際には答えはありません-あなたの質問は、議論の大きなトピックを開きます. 本を買ったり、Google で忙しくしたりする時間です。

于 2012-11-21T20:25:11.330 に答える