ASP.NET MVC View Model с LINQ To Entities

2

Скажем, я создаю результат запроса

var query = from a in tblXYZ join c in tblABC on a.id = b.id select new {a.x, b.x};

Какой лучший способ передать это в виде? Должен ли я создать новый объект и скопировать результат запроса в него?

Теги:
ado.net
asp.net-mvc
ado.net-entity-data-model

3 ответа

3
Лучший ответ

Я думаю, что это почти всегда предпочтительный механизм для создания конкретной модели. Я бы также второй рекомендации @Marc материализовать запрос в контроллере и передать представление в список. Если у вас есть проблема с запросом, гораздо проще диагностировать, выполняется ли запрос в контроллере, а не в представлении. Трассировка стека на самом деле полезна в этот момент.

1

Как показано, это будет анонимный тип, к которому можно получить доступ (еще проще в 4.0 через dynamic), но это не уродливо. В настоящее время он также страдает от двусмысленности, когда происходит доступ к данным, поскольку LINQ отложен, что означает, что если вы передадите этот запрос в представление, вы действительно делаете доступ к данным во время просмотра (а не внутри контроллера).

У меня возникло бы желание создать класс для представления данных (по существу, в виде модели) и вернуть список сущностей (не отложенный запрос).

  • 1
    Я рекомендую поддаться искушению (по крайней мере, в этом случае). :-)
  • 0
    Просто из любопытства, куда я должен поместить эту модель представления (мудрое соглашение)? Контроллер? Отдельный файл?
0

Поместите запрос в репозиторий. В контроллере передайте результат запроса в указанный вид модели для этого представления.

Model-View - заданный класс для передачи данных с контроллера на представление.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню