2009-03-06 9 views
10

プログラミングでは最後に、DataReadersと従来のADO.NET APIからオブジェクトリレーショナルマッピング(ORM)に移行しようとしていました。.NETとデータベースのレイヤー

これを行うには、sqlmetalでDBのDataContextを生成しました。 DataContextprivateを作成した薄いデータレイヤーがあり、この薄いデータレイヤーでpublicメソッドを使用する必要があるデータベースにアクセスする必要があります。これらのメソッドは基本的にストアドプロシージャでした。 LINQ to SQLを使用してデータベースに対してクエリを実行します。

これは今日の共通のアプローチですか?つまり、.NET 3.5フレームワークを実際に使用している人は、ビルドプロセスでsqlmetalを実行しているのですか?当時はほとんどハックのようだった。

基本的には、サードパーティ製のオープンソース・ソフトウェアを使用していない.NET 3.5の店舗で、DALを今日書くつもりなら、LINQ to SQLとsqlmetalが期待するものがあるかどうかを知りたいと思います。ソースORM。

+0

私も知りたいのですが。私は自分自身のDAL/ORMを今何年も使ってきており、私が見ているのはMS(linqToSQLの事例)の出番です。私は今、私のことを守っている。 –

+0

ここに同じ...私が何をしているのか、linq2sqlのプロジェクトを最近行って、何か重要なことを見逃していたかどうかを確認しましたが、それは問題ありませんでした。すべてを処理するためのストアドプロシージャとカスタムクラス。 –

+0

.NETが進化していくのはすばらしいことですが、どちらの馬に賭けるかを理解しようと少しイライラしています! :) – core

答えて

3

あなたのアプローチは良いです。私は現在Astroriaサービス(ADO.NET Data Services)を使用しています。これについてはMSDN Magazineにすばらしい紹介がありました。

また、私は新しいPLINQOが好きです(ただし、CodeSmith Toolsが必要です)。これは私の意見では非常に滑らかです。

このようなDAL(サービスレイヤー)を使用している場合、私はクライアントアプリケーション(SilverlightまたはASP.NET MVC)からこのサービスを消費します。

3

私はそれがあなたの使用に依存すると思うが、あなたのDALになると説明したように、このような薄いデータレイヤーで言うと思います。ほとんどのプロジェクトでは、主に編集/作成ロジック用と、取得用のステッチロジック用に、別のレイヤーを構築します。

ほとんどの私のプロジェクトでは、このようにデザインしています。

リポジトリのDataContextのインスタンスを保持し、いくつかの基本的な追加/削除の方法に
ProductRepository公開します。リポジトリは(のIQueryable)一般的なクエリーを公開し
StoreServiceはProductRepository、SalesRepositoryのような異なるリポジトリのインスタンスを使用してのようなものを作成するためのすべてのロジックを処理します製品。これは、結果クラスのいくつかの並べ替えを返します

StoreService.CreateProduct(/* properites */) 

だから、何かのよう

...。

+0

私はビジネスアプリケーションの通常の行にこのアプローチを使用している唯一の人ではなかったことを知っていた!私がこのアプローチで開発を始めて以来、保守性と懸念の分離は最大の利益でした。 –

5

何らかの種類のデータアクセスレイヤーを使用することが最良の方法と考えられます。これがORMで最も達成されるかどうかは、大きく議論されている問題です。 ORMが行く方法であると一般的に主張する1つの派閥があります。別の派閥は、ストアドプロシージャとデータベースセントリックが最善のルートであると主張しています。

また、これはあなたが意味を正確にポスターではないかもしれないが、それは同様の(そしてまた私のブースでは1)

http://download.microsoft.com/download/4/a/3/4a3c7c55-84ab-4588-84a4-f96424a7d82d/NET35_Namespaces_Poster_LORES.pdf

1

この非常にサイトがSQLにLINQを使用していますので、あなたのようにそれを取ります意志。

正式には、マイクロソフトは新しい開発の観点から、LINQ to SQLの上でEntity Frameworkをサポートしています。しかし、EF is the wrong way to goと思う声のグループがあります。 LINQ to SQLは、DBのバックエンドを使用できるという点では幾分限定されていても、しばらくの間はまだ存在しており、非常にまともなORMです。

あなたのORMの出発点としてLINQをお勧めします。あなたがもっと必要な場合は、EFやNHibernateをご覧ください。

+0

「信用投票」で提起された懸念に対する正式な回答があるかどうか知っていますか? –

+0

私は現時点では何のリンクもなく、掘り起こす気もしませんが、公式のラインは、 "ネジを締めて、私たちがやりたいやり方でEFをやっています"というものだったと確信しています。しかし、それ以上のPCだと確信しています。 :)私は彼らが多くの問題は後のバージョンで修正されるだろうと言ったと思います。早めに/頻繁に発送してください。 – Randolpho

0

"これは今日の共通のアプローチですか、つまり、.NET 3.5フレームワークを使用している人は誰でも、ビルドプロセスで実際にsqlmetalを実行しているのですか?

私が3.5フレームワークを使って知っている人たち(それはみんなのことです)は、大部分がNHibernateを使っています。バージョン2.0は非常に素晴らしいOR/Mです。私は最近のプロジェクトでこれを使用し始めました。データアクセスコードを大幅に削減しました。これは、将来他のものを使用したくないところまでです。また、Fluent NHibernate APIは、XMLマッピングが気に入らない人にとっては進歩を遂げています。

3

最高のデータレイヤーは、シンプルで単純なもので、何の鐘も付くことなくジョブを完了させます。私はあなたがここで述べて書いたテクノロジーをここに使っています: The Only Pattern for Data Access is - There Are No Patterns for Data Access

+0

私は同意します。私はあなたのブログを読んでそれは理にかなっています。私が必要とした確認をありがとう。 – stepanian

関連する問題