Решения:Связи между BLL и DAL
- ВВЛ (библиотека классов)
- BLL (библиотека классов)
- Common (библиотека классов (некоторые общие функциональные возможности - перечисления, каротаж, исключение, .. .))
- Application1 (Windows Application)
- Application2 (Windows Application)
- WebApp (веб-приложение)
- ...
Допустим, у меня есть клиентов лицо, которое:
- таблица в SQL сервере
- в CustomerDataTable в DAL класса
- Клиент в УСК
- a BLL.Customer class во всех приложениях
Какие объекты должны использовать BLL и DAL для связи - DataTable
или List<Customer>
(например)? В первом случае логика BLL должна преобразовать объект Customer в DataTable и отправить его в DAL. В случае secod, слой DAL должен знать класс Customer, который находится в слое BLL. Но оригинальная DLL ссылается на DAL и не противоположна ...
Должен ли я помещать все классы в отдельную сборку, на которую ссылаются все остальные (Common, BusinessObjects, ...)? В этом случае я мог бы использовать класс Customer во всех моих проектах.
Должен ли я даже разделять DAL и BLL, когда знаю, что только один BLL будет использовать мой DAL. В этом случае я мог объединить их в один проект.
PS - Я читаю о DataTables, и многие люди говорят, что мы не должны использовать их вообще. Какие варианты лучше? Может быть, мне пора узнать некоторые инструменты для сопоставления ORM :)
Мне нравится этот. Один вопрос: если у меня есть класс Customer в сборке Model (или Domain, Entities), должен ли этот класс также иметь все методы, такие как GetAllCustomers, GetCustomer (int id), ...? Или должна ли модель иметь только свойства и методы должны быть в BLL? – sventevit
Я бы хотел, чтобы класс Customer служил только объектом данных, поэтому просто свойства и методы, подобные «GetAllCustomers». этот метод я бы поставил в BLL, который использовал бы DAL для запроса. – Ami
В этом случае я мог бы добавить частичные классы в BLL, которые расширяют мои базовые классы из сборки модели и добавляют их методы? – sventevit