Разделение на DAL и BLL - мои проблемы - PullRequest
2 голосов
/ 08 июня 2010

Во многих сообщениях на эту тему я сталкиваюсь с очень простыми примерами, которые не отвечают на мой вопрос.

Допустим, есть таблица документов и таблица пользователей. В DAL написано в ADO.NET у меня есть метод, чтобы повторить все документы по некоторым критериям. Теперь у меня есть интерфейс, у меня есть случай, когда мне нужно показать этот список вместе с именами создателя.

Вплоть до того, что я сделал это с помощью одного метода в DAL, содержащем оператор JOIN. Однако каждый раз у меня есть такой сложный метод, я должен сделать пользовательское отображение на некоторый объект, который не помечает 1: 1 для БД.

Должен ли он быть помещен в другой слой? Если это так, то мне придется отказаться от запроса на соединение для итерации по результатам и опроса каждого автора документа. , , что не имеет смысла ... (производительность)

Каков наилучший подход для таких сценариев?

Ответы [ 2 ]

1 голос
/ 08 июня 2010

Для вашего пользовательского интерфейса я предлагаю, чтобы dto (viewmodel для этих людей mvp / mvc) содержало данные пользователя и соответствующий список документов.

Всегда будет присутствовать пользовательское отображение, поэтому я предлагаю вамвзгляните на Automapper, чтобы облегчить эти проблемы при картировании.

0 голосов
/ 08 июня 2010

Я сталкивался с тем же самым в прошлом, когда создавал свои собственные слои доступа к данным. Вы хотите, чтобы ваши объекты отображались один в один в вашу базу данных, но во многих случаях вам просто нужно списать одну из пользовательских функций для извлечения внутренних данных соединения. Я не стал бы помещать эти пользовательские действия в их собственный слой.

Время от времени я создавал общий класс, который отвечал за извлечение данных для сеток, полей со списками и т. Д., Который объединял информацию из ряда таблиц. Этот класс будет возвращать пользовательские объекты, содержащие полученные результаты. Если вас не устраивает инструмент, который выполняет автоматическое сопоставление для вас, я бы предложил создать собственную утилиту построения классов для автоматического сопоставления.

Пока вы разделяете свое приложение на уровни доступа к данным, бизнес и пользовательский интерфейс, я думаю, вы движетесь в правильном направлении.

...