EF lub jakakolwiek inna ORM (tj. NHibernate) nie zastępuje twojej warstwy dostępu do danych. ORM jest raczej warstwą abstrakcji z DAL do źródła danych.
Nie dajcie się zwieść wierze, że EF likwiduje DAL. EF jest tylko innym źródłem danych. Jednak w najlepszej praktyce nadal chcesz streścić i zcentralizować cały dostęp (odczyt/zapis) we wspólnym DAL.
Oto doskonały przykład tego, o czym mówię. Załóżmy, że musisz usunąć danego użytkownika w jednym z przypadków użycia. Jednak podczas usuwania użytkownika możesz chcieć usunąć inne rekordy powiązane z usuniętym użytkownikiem, aby uniknąć zapisów osieroconych (Szczerze mówiąc, użyłbym w tym celu zapisanego procesu). Teraz ten przypadek użycia utknął w niektórych BO, które są bardzo specyficzne dla tego przypadku użycia i usuwanie, ponieważ użytkownik jest tylko jedną częścią całkowitego przypadku użycia.
W pewnym momencie masz programistę, który poproszony jest o dołączenie innego przypadku użycia, który może spowodować usunięcie użytkownika! Programista może zrobić kilka rzeczy. 1) Może utworzyć nowy przypadek użycia, który teraz wymaga usunięcia użytkownika, ale zapomniał usunąć powiązane rekordy z tym użytkownikiem. 2) Być może zauważył poprzedni przypadek użycia, ale nie mógł go użyć bezpośrednio, bez nadmiernego uogólniania go w celu użycia, więc zdecydował się skopiować część tego przypadku użycia, który odpowiednio usuwa użytkownika i powiązane z nim rekordy w jego przypadku użycia . Teraz mamy duplikaty części kodu, które robią praktycznie to samo - usuń użytkownika. Yuk! Teraz, po wprowadzeniu tego "usunięcia użytkownika", powiedzmy, DAL.Użytkownicy pomagają w klasie, unikasz tej złej praktyki projektowej.
W każdym razie, jedyną dobrą rzeczą w EF, zmniejsza liczbę jednostek gospodarczych, które użyłem do ręcznego tworzenia i zapewnia inny widok danych z poziomu aplikacji niż na poziomie magazynu danych.
Drajwer Stackoverflowa: http://blog.stackoverflow.com/2008/09/what-was-stack-overflow-built-with/ –