ASP.NET MVC View Model с LINQ To Entities - PullRequest
2 голосов
/ 24 января 2010

Допустим, я создал результат запроса

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

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

Ответы [ 3 ]

3 голосов
/ 24 января 2010

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

1 голос
/ 24 января 2010

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

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

0 голосов
/ 24 января 2010

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

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

...