2

ASP.NET で Web アプリケーションを書き始めたとき、MSSQL サーバーへのデータベース アクセスに Linq-To-SQL マッパーを使用する小さなプロジェクトから始めました。
ある程度の経験を積んだ後、グラフィック レイヤー、ビジネス レイヤー、データ レイヤーを使用した従来の 3 層アプローチに切り替えました。データ層の唯一の機能は、挿入/更新/削除メソッドをロジックなしで提供し、ロジックを選択メソッドの形式で提供することでした。

時間が経つにつれて、GUI までデータベース クラスを提供しない方がよいことに気付きました (残念ながら時間がかかりました)。BL で実行されるすべての操作に使用され、ビジネス層からリストを取得する形式で GUI によって表示されるビジネス クラスを BL で使用するように切り替えました。
大きな利点は、データベース自体では表されない追加のプロパティを提供できることです。ただし、対応するビジネス層クラスをデータベース クラスにマップするメソッドを使用して、ビジネス層内でそのマッピングを自分で行いました。

それがO/Rマッパーが役立つところだと思いますか?今まで彼らの目的を理解できなかったが、やっと見つけた気がする。最近、.NET Framework 4 で新しい Entity Framework を使用してみましたが、Linq-To-SQL DataContext のようにしか使用していません。

マッピングを自動的に達成する方法はありますか? はいの場合、それは新しい Entity Framework が提供するものですか、それとも NHibernate のような O/R マッパーを探す必要がありますか?

4

4 に答える 4

4

私は自分のプロジェクトでNHibernateを独占的に使用しています。私はそれが私に与えるコントロールと柔軟性が好きです。Active Recordと呼ばれる「ショートカット」があります。これはNHibernateを隠蔽して使用しますが、NHibernateへの非常に優れたシンプルなインターフェイスを提供します。

NHibernateの学習曲線は急勾配ですが、それを乗り越えると、非常にスムーズな航海が可能になります。NHibernateの道を冒険するとき(そしてもしそうなら)、Ayendeをチェックしてクールなヒントを見つけてください。

于 2010-09-02T19:58:08.120 に答える
3

(EntityFrameworkO/ Rマッパーです。)

ORMで手を汚すことを真剣に考えている場合(ただし、その分野では比較的新しい)、これらのトピックに関するTekPubのビデオのようなものを強くお勧めします。これらのツールが使用されていることを最初から確認できます。それはあなたが言及したもののようないくつかの単純であるが現実世界の問題への優雅な紹介です。

于 2010-09-02T19:57:28.800 に答える
1

LinqToSql は ORM であるため、既に使用しています。LinqToSql を取り出して EntityFramework または NHibernate に置き換えても、現在抱えていると思われる問題は解決されません。

追加のコンテキストを提供するために、さらに学習する必要があるいくつかの事項を次に示します。

于 2010-09-03T10:45:03.720 に答える
1

私は Entity Framework 4.0 (+ CTP) をとてもよく使いました。そのような ORM を扱う方がはるかに簡単だと思います。EF4 は、C#/.NET から MSSQL と相互運用するために必要なすべてを提供します。SQL を 1 行も記述する必要はなく、(ObjectQuery を介して) LINQ を完全にサポートしています。

于 2010-09-02T20:49:10.633 に答える