2009-05-27 13 views
13

W mojej aplikacji ASP.NET chcę zaimplementować warstwę danych za pomocą Entity framweok, dzięki czemu mogę używać jej jako narzędzia ORM. Ale nie chcę, aby reszta aplikacji obchodziła, że ​​używam tego lub jest zanieczyszczona przez jakąkolwiek konkretną jednostkę.Używanie struktury Entity jako warstwy dostępu do danych

Nie mogę znaleźć nikogo, kto używa struktury podmiotu wyłącznie w warstwie dostępu do danych, więc chętnie zobaczę przykłady online tego/doświadczenia ludzi.

+0

Drajwer Stackoverflowa: http://blog.stackoverflow.com/2008/09/what-was-stack-overflow-built-with/ –

Odpowiedz

2

użyłem Entity Framework jako dostęp do danych w moich ostatnich dwóch projektach. Są to duże (dla mnie conajmniej) projekty z kilkoma setkami stołów, 5-15 programistów trwających ponad rok.

W obu projektach mamy interfejs WCF w naszej warstwie usług. Nie chcieliśmy używać obiektów Entity Framework w naszych kontraktach WCF. Dlatego stworzyliśmy obiekty przenoszenia danych i mapujemy pomiędzy obiektami DTO i Entity Framework.

To rozbija zależności i utrzymuje umowy tak stabilne, jak to możliwe, ale tworzy dodatkową pracę.

W zależności od twojego horyzontu czasowego zrobiłbym to w ten sposób lub użyłbym obiektów POCO w następnej wersji, jak wspomniał Kieth.

2

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.

Powiązane problemy