Как преодолеть несоответствие модели → ViewModel? - PullRequest
3 голосов
/ 19 ноября 2009

Я сбит с толку.

У меня есть модель linq-to-sql, которая является зеркалом таблицы базы данных

(Id, CustomerId, RegionId,...N), 

ничего интересного, все внешние ключи. Теперь мне нужно просмотреть эти данные в моем представлении asp.net. Я создаю ViewModel

(Id, CustomerId, Customer, RegionId, Region, CustomersSelectList, RegionsSelectList). 

Очевидно, что viewmodel - это расширенный набор модели linq-to-sql.

Теперь, как мне преобразовать одно в другое? Я использую автомаппер, но озадачен тем, как найти хорошие шаблоны для получения недостающих данных.

Я вижу возможные решения:

  1. Создайте 3-й класс, который будет моделью l2s + соединенные значения, и заполните этот класс, соединяя и проецируя. Затем автоматизируйте этот класс для моей модели представления.

  2. Возвращать анонимные классы через проекцию и сопоставлять их с моделями представления с помощью автомпера (не очень чисто).

  3. Создание представлений БД для запросов (представления - это все необходимые таблицы, объединенные вместе).

Пожалуйста, помогите мне с этим, потому что раньше я использовал свои классы L2S непосредственно в представлениях (для простых проектов), теперь у меня есть более сложные представления и мне нужно что-то делать для решения сложности.

Кроме того, кто несет ответственность за это преобразование? Где это должно произойти?

Спасибо.

UPDATE: позвольте мне немного уточнить. Мне нужно иметь возможность получить полное представление о моем предприятии. В БД он хранится в нескольких таблицах, в L2S это много классов (зеркальных таблиц БД), в моем ViewModel он должен быть «накоплен» из многих таблиц БД.

Должен ли я выполнять соединения sql через linq и напрямую заполнять ViewModel?

Должен ли я создать бизнес-объект (не linq one) со всеми полями и заполнить его linq для sql, а затем автоматизировать его для ViewModel?

Должен ли я прекратить использование класса L2S в качестве бизнес-объекта, создать новый класс бизнес-объекта с нуля и вместо этого рассматривать L2S как тупой ORM?

1 Ответ

1 голос
/ 19 ноября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...