Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Нужен ли DAL если есть EF!? И уточнение по структуре проекта / 15 сообщений из 15, страница 1 из 1
13.09.2019, 13:27
    #39861483
__Pavel__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
Привет!

Очередной затык, наткнулся на статью где в комментария произошел холивар на тему, что DAL не нужен если есть EF, т.к. он и есть DAL, вот ссылочка на начало холивара .
Решил загуглить и вот нашел статью в которой это разбирается . Хорошо, если отказываться от своих репозиториев (не люблю велосипеды), то куда втыкать Контекст, если я вынес Entities, Enums и Models в отдельный проект?

Пока получается такая структура:
Проект 1 - Domain Models Layer (DML)
• Entities - Сущности БД (Code First)
• Enums - Перечисления для всех проектов
• Models - Модели представлений (с ними и с Entities работает BLL)

Проект 2 - Business Logic Layer (BLL) : связан с DML
• Context - Context EF
• Services - Сервисы для предоставления и обработки данных, а так же интерфейсы к ним

Проект 3 - ASP.NET (WEB) : связан с DML и BLL
• Controllers
• Views

Все ли логично в данной структуре?
Спасибо!
...
Рейтинг: 0 / 0
13.09.2019, 13:41
    #39861492
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
__Pavel__,

вообще ни фига не логично :)

Domain Model - это предметная область, в ней и существует логика (бизнес логика).
Её представление и взаимодейтсвие с ней может быть разным, через разные интерфейсы, которые выделяют в соответсвующий слой.
Также в отдельный слой выделяют сохранение данных предметной области.

А у вас в Domain Models Layer и сущности БД, и модели представления.
Business Logic Layer вообще не понятно, что из себя представляет. Зачем-то там Context EF.

BLL должен содержать в себе Domain Model.
Проект 3 - это Presentation Layer, в нём должны быть модели представления.

Context EF и всё что относится к БД следует разместить в Data Layer.
...
Рейтинг: 0 / 0
13.09.2019, 13:57
    #39861519
__Pavel__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
Дмитрий Мух,

Да, но нет =)

Изначально так и было все, но возникли проблемы, например BLL не имеет ссылку на WEB и поэтому не имеет доступа к Моделям, а значит надо городить еще одни модели на уровне BLL, а потом на уровне WEB их еще раз мапить, это костыль как по мне, вынос Сущностей и Моделей в отдельный проект решает данную проблему сразу и не создает никаких новых. Это опять же не я придумал =)
...
Рейтинг: 0 / 0
13.09.2019, 13:58
    #39861521
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
BLL ничего не должен знать о моделях представления.

А ты сделал распределённый монолит, спагетти
...
Рейтинг: 0 / 0
13.09.2019, 14:00
    #39861525
__Pavel__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
Shocker.Pro,

а они чем-то отличаются от моделей в BLL, кроме аннотаций?
...
Рейтинг: 0 / 0
13.09.2019, 14:10
    #39861538
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
В общем-то - да.
Сейчас ты скорее всего наделал универсальных моделей, которые работают и на бизнес-логику и на представление.
...
Рейтинг: 0 / 0
13.09.2019, 14:12
    #39861540
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
уровень презентации зависит от BLL
BLL зависит от DAL
в обратную сторону не должно быть зависимостей
...
Рейтинг: 0 / 0
13.09.2019, 14:19
    #39861546
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
__Pavel__Дмитрий Мух,

Да, но нет =)

Изначально так и было все, но возникли проблемы, например BLL не имеет ссылку на WEB и поэтому не имеет доступа к Моделям, а значит надо городить еще одни модели на уровне BLL, а потом на уровне WEB их еще раз мапить, это костыль как по мне, вынос Сущностей и Моделей в отдельный проект решает данную проблему сразу и не создает никаких новых. Это опять же не я придумал =)
И кто же такое придумал?

Да, надо "городить" отдельные сущности предметной области и отображать их на модель представления и БД.
И если ты почитаешь про предметно-ориентированное проектирование (DDD), то откроешь для себя как "городить" правильно.
...
Рейтинг: 0 / 0
13.09.2019, 14:26
    #39861555
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
Shocker.Proуровень презентации зависит от BLL
BLL зависит от DAL
в обратную сторону не должно быть зависимостей
BLL не зависит от DAL на прямую, а используется внедрение зависимостей.
То есть BLL знает только об IRepository, реализация которого может вполне себе работать с распределённым кэшем.
Ты же не будешь писать, что в этом случае BLL зависит от подситемы кэширования.
...
Рейтинг: 0 / 0
13.09.2019, 14:27
    #39861558
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
А вот DAL зависит от BLL, потому как надо знать на что отображать (на какие сущности предметной област) данные из БД.
...
Рейтинг: 0 / 0
13.09.2019, 19:48
    #39861787
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
Дмитрий МухContext EF и всё что относится к БД следует разместить в Data Layer.

В простых ситуациях EF и есть Data Layer сам по себе.
...
Рейтинг: 0 / 0
13.09.2019, 19:50
    #39861788
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
Дмитрий МухТо есть BLL знает только об IRepository, реализация которого может вполне себе работать с распределённым кэшем.
Ты же не будешь писать, что в этом случае BLL зависит от подситемы кэширования.

Собственно DbContext и есть абстракция.
Просто чем больше система, тем больше вероятность столкнуться с недостаточной гибкостью DbContext, но в целом он очень даже мощный, и кеш туда можно встроить несколько уровневый, и безопасность, аудит, и много чего. Однако использовать его в таком качестве на перспективу всё равно риск. Зато даёт буст в начале.
...
Рейтинг: 0 / 0
13.09.2019, 19:50
    #39861789
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
hVostt,

давно не бывал в простых ситуациях, что это? приведи пару примеров
...
Рейтинг: 0 / 0
13.09.2019, 19:53
    #39861793
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
Дмитрий МухhVostt,

давно не бывал в простых ситуациях, что это? приведи пару примеров

накидать пилота какого-нибудь для начала.
или проект для решения задачи на конкретный срок, с конечным жизненным циклом в рамках нескольких месяцев.
...
Рейтинг: 0 / 0
13.09.2019, 19:54
    #39861794
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен ли DAL если есть EF!? И уточнение по структуре проекта
Дмитрий Мух,

собственно, только для этого лично я им и пользуюсь, в перспективных проектах с условно бесконечным циклом жизни (пока не загнётся компания), брать EF уже не стоит.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Нужен ли DAL если есть EF!? И уточнение по структуре проекта / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]