2011-02-08 6 views
0

2003年には、PHPを使用してデータベースを使用するWebアプリケーションを作成し始めました。もちろん、私はストアドプロシージャ、プリペアドステートメント、またはあらゆる種類のORMフレームワークを使用せずに、自分のコードに直接SQLクエリを置くことに始めました。しかし、当時は私が今日取り組んでいるコード(その時代に構築されたVB.Net Webアプリケーション)によって証明されているように、これは一般的な慣行でした。.Netのデータベースアプリケーションのベストプラクティス

このアプリケーションでは、約12個のストアドプロシージャ、いくつかのプリペアドステートメント、多くのSQLクエリをコード内で直接使用します。一般に、接続を取得し、SQLクエリ(文字列)を実行し、次にハードコードされたフィールド名を使用してデータを抽出するためにリーダーを使用するコードの冗長ブロックがあります。 2011年です。この種のコードを書くのは簡単で、2003年に人気がありましたが、ベストプラクティスではないと思います。それは安全ではない、または維持するのが簡単ではなく、私はストアドプロシージャに触れていません。

私は、アプリケーションでSQLクエリをハードコードすることから、応答からデータを手動で解析することに移行したいと考えています。 .Netでデータベースアプリケーションを作成するための現在のベストプラクティスとツールは何ですか?私はLinq2SQL、Entity Framework、NHibernateなどの技術について聞いたことがありますが、いつ使用するべきか、それとも現在のものなのかはわかりません。

私は、Visual Studio 2010を使用している、VB/C#とSQL Server 2008 Expressの

編集:あなたのほとんどは、ORMのソフトウェアを議論しているように見えます。これは私が望むように聞こえる。オブジェクトとしてアクセスできる多くの情報を持つ複数のテーブルがあります。代わりに、標準クエリまたはプリペアドステートメントを使用する必要がありますか?

+0

ORM(あなたに適していると思われる)と一緒に行く場合は、ここで選択するためのヘルプがあります:http://stackoverflow.com/questions/1377236/nhibernate-entity-framework-active -records-or-linq2sql/ –

答えて

0

object relational mapping (ORM)テクノロジを使用することは賢明です。 (あなたが言及したように)動的なやり方でデータとやりとりする(例えば、ストアドプロシージャやクエリの生成を行わずに)、非動的な方法(ストアドプロシージャなど)を容易にするフレームワークがあります。

ここでは、ORMテクノロジの現在の状況について説明しましたが、ここではそれぞれの違いのいくつかの内訳です。

NHibernate

Java Hibernateプロジェクトをオフに基づいているオープンソースプロジェクト。これは非常に活発であり、多くのシナリオを非常にサポートしています。

LINQ to SQL

公式に死んだわけではないが、公に開発の焦点は、LINQツーSQLになりませんと述べられています。その努力はLINQ-to-Entitiesに向けられます。 LINQ to Entities(これとそれを選択した場合)を扱う方が一般的には良いアイデアですが、問題があります。モデルの生成は、好きなようにきれいではない、the metadata mapping model that they use doesn't allow you to use models from different designers easilyなど、NHibernateがおそらく長い間前に克服してきたその他の問題があります。 .NETでのデータアクセスの現在好ましい方法

LINQ to Entities

(VS.NETでは、そのようなRIAなどのフレームワークで、デザイナーのサポートとの統合だけではないことでevidiencedとして)、これは、MSが捧げるために何が起こっているかでありますORM空間を扱うときにエネルギーを消費します。現在、2番目の大きな反復(多数の人が使用することが難しい最初のもの)では、使いやすさが確実に向上しました。

私は他のMS技術との将来の統合についても考えています。


にかかわらず、すべての3つの技術があなたの代わりにあなたがパース/使用文字列検索を持つデータセットのあなたにオブジェクトモデルを返しますように、あなたのストアドプロシージャを公開することができます。

また、データをデータベースに戻す必要がある場合も処理します。彼らはちょうどそれぞれ異なる方法でそれについて行く。

+0

このガイドはNHibernateの使用方法を学ぶのに便利です。http://nhforge.org/blogs/nhibernate/archive/2010/04/25/first-three-nhibernate-quickstart-tutorials -available.aspx – Chris

3

エンティティフレームワークとNHibernateは、どちらもオブジェクト/リレーショナルマッパーと呼ばれています。どちらも、オブジェクトとデータベースの間の橋渡しをするレイヤーを生成します(Object Relational Impedance Mismatchと呼ばれることもあります)。

OR/Mを十分に使用することはお勧めできません。どちらかが良いです。 NHibernateはセキュリティ面では少ししか問題はありませんが、学習曲線が急峻になっているようです。私は個人的にEntity Frameworkを使用しますが、それは本当に好みの問題です。

両方のフレームワークには、ツールを使用して必要な作業ができないときに備えて、ストアドプロシージャを直接呼び出すことができます。尊敬する

LINQ2SQLは、よりデータベース指向の技術ですが、OR/Mと見なされます。私はEFにまっすぐにスキップします。 EFは.Net 3.5 SP1の一部で、hereが見つかりました。ここで

がEFを使用して、データベースから顧客を取得するためにいくつかのコードの例です:OR/Mを使用する

using (var ctx = new DBEntities()) 
{ 
    var employee = (from e in ctx.Employees 
      where e.User.UserName == userName 
      select e).FirstOrDefault(); 
} 

もう一つの理由は、私の意見では、彼らはのデザインビューを促進する傾向があるということですあなたのコードはファーストクラスの成果物になります。私がこれを意味するのは、短い時間で終了したときに放棄しないエンティティ間の関係のグラフィカルな表示になります(エディタはドラッグアンドドロップであるためです)。

開始時のMSのリンクはhttp://msdn.microsoft.com/en-us/library/bb386876.aspxです。

HTH。

1

はLLBLGenをお試しください:http://www.llblgen.com/defaultgeneric.aspx

彼らはあなたのDBにポイントし、瞬時に数分であなたのために生成されたあなたのDALのすべてを持つことができますシンプルなUIを持っています。セットアップと統合は私が見た他のORM製品よりはるかに簡単でした。カスタマイズも可能ですが、カスタマイズはまだまだありません。自分自身でさらに情報を見つける必要があります。

関連する問題