Jeśli Entity Framework / DbContext jest DAL / Repository, to gdzie mieści się w architekturze trójwarstwowej?

Czytałem artykuły o StackOverflow i innych witrynach przez cały dzień na temat najlepszych praktyk architektonicznych i jest tak wiele sprzecznych pomysłów i opinii.

W końcu zdecydowałem się na podejście, ale naprawdę trudno mi zdecydować, gdzie umieścić obiekty EF (DbContext, Fluent API, Seeding data itp.). Oto, co aktualnie mam:

Projekt ASP.NET MVC: Rzeczywisty projekt internetowy. Zawiera standardowe widoki, kontrolery i View Models (wewnątrz aModele teczka).

Projekt modelu domeny: Zawiera wszystkie klasy POCO, które definiują obiekty bazy danych (domeny). Obecnie nie wspomina ani nie odwołuje się do żadnych obiektów EF.

Projekt warstwy usług: Zawiera obiekty usług dla każdego typu obiektu domeny (np. IProductService, IOrderService itp.). Każda usługa odwołuje się do obiektów EF, takich jak DbSets i obsługuje reguły biznesowe - np. Dodaj Produkt, pobierz Produkt, dołącz Produkt do Zamówienia itp.

Zatem pytanie brzmi, w tej konfiguracji, gdzie idą klasy EF? Początkowo myślałem w warstwie usług, ale to nie wydaje się mieć sensu. Potem pomyślałem, że umieściłem je w warstwie modelu domeny, ale potem powiązałem modele domeny z EF, który jest zasadniczo DAL / repozytorium. W końcu pomyślałem o stworzeniu oddzielnego projektu DAL tylko dla EF, ale wygląda na to, że to ogromne marnotrawstwo, biorąc pod uwagę, że prawdopodobnie będzie miał 3-4 pliki (DbContext i kilka innych małych plików).

Czy każdy może udzielić wskazówek?

questionAnswers(2)

yourAnswerToTheQuestion