BLL: уровень бизнес-логики. Реализует шаблон хранилища на этом слое
Я не совсем согласен с этим. Репозиторий предназначен для абстрагирования основного хранилища данных (SQL Server, XML и т. Д.). Это проблема уровня данных, а не бизнес - поэтому, почему это должно быть в BLL?
Правильно ли подходит мой подход к определению слоев?
Вид. :) Это немного субъективно, но обычно у вас есть:
- Данные
- Бизнес
- Бизнес-правила, логика домена и сущности.
- Презентация
- Пользовательский интерфейс / веб-приложение.
Теперь обычно эти три разбиваются дальше. Так что в вашем случае я бы имел:
- MyCompany.MyProject.Data (Репозиторий)
- MyCompany.MyProject.Business.Services (вызывает хранилище, применяет бизнес-правила и т. Д.)
- MyCompany.MyProject.Business.DomainModel (Entities)
- MyCompany.MyProject.UI (веб-приложение)
Должен ли я предпринять какие-либо дополнительные шаги для отслеживания чейджа, отложенной загрузки и т. Д. (Под т. Д. Я имею в виду функции, которые Entity Framework включает в обычный, 1 проект, не генерирующий код POCO)?
Если вы не используете POCO (например, вы используете генерацию кода по умолчанию). Тогда вам не нужно беспокоиться об отслеживании изменений.
Что касается отложенной загрузки - это решение, которое вам нужно принять. Я лично отключаю отложенную загрузку, потому что я не хочу, чтобы ленивые разработчики возвращали кучу записей, когда они не просили об этом.
Вместо этого принудительно установите вызывающий код (например, бизнес / услугу) на нетерпеливую нагрузку , что ему нужно.
Если вы используете приложение ASP.NET MVC, если у вас отложенная загрузка, ваш View может в конечном итоге вызвать базу данных во время рендеринга, нарушая шаблон MVC.