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 マッパーを探す必要がありますか?