EFまたは他のORM(つまり、NHibernate)は、データアクセスレイヤを置き換えません。むしろ、ORMは、DALからデータソースまでの抽象レイヤーです。
EFがDALと離れていると騙されてはいけません。 EFは単なる別のデータソースフレームワークです。ただし、ベストプラクティスでは、一般的なDALですべてのアクセス(読み取り/書き込み)を抽象化し、集中化したいと考えています。
私が話していることの完全な例です。ユースケースの1つで特定のユーザーを削除する必要があるとします。ただし、ユーザーを削除するときに、孤立したレコードを避けるために、削除されたユーザーに関連付けられた他のレコードを削除することができます(正直なところ、これにストアドプロシージャを使用します)。今では、このユースケースは、このユースケースに非常に特有のBOに固執しており、ユーザーがユースケース全体の一部に過ぎないので削除します。
ある時点で、関連する別のユースケースを組み込み、ユーザーを削除するように求められる開発者がいます。開発者はいくつかのことをするかもしれません。 1)ユーザーを削除するが、そのユーザーに関連付けられたレコードを削除することを忘れた新しいユースケースを作成する可能性があります。 2)以前のユースケースに気付いたことがあるかもしれませんが、ユースケースのために一般化しないと直接使用することはできないため、ユースケースとその関連レコードを適切に削除するユースケースの一部をユースケースにコピーすることにしました。ここでは、実際に同じことをするコードを複製して、ユーザーを削除します。 Yuk!さて、これをDALに「削除するユーザー」を入れています。ユーザーヘルパークラス、あなたはこの悪い設計の練習を避けます。
とにかく、EFに関する素晴らしい点は、私が手動で作成したビジネスエンティティの数を減らし、アプリケーションレベルからデータストアレベルで見られるものとは異なるビューを提供することです。
StackoverflowのDAL:http://blog.stackoverflow.com/2008/09/what-was-stack-overflow-built-with/ –