как можно получить данные из другой таблицы - PullRequest
2 голосов
/ 20 июня 2011

Я проектирую проект на asp.net mvc3, я разработал свою базу данных на сервере sql, добавлю, что я использую ado.net.

Это действие моего контроллера

    public ViewResult ProductFormulationIndex()
    {

        return View(db.ProductFormulation.ToList());
    }

означает, что я хочу отобразить все поля таблицы ProductFormulation.это моя таблица: - enter image description here

, и это моя таблица productCategory enter image description here

в моем ProductFormulationIndex.cshtml я хочу отобразить код таблицы ProductCategory Table, а не только id.Так что мне делать в контроллере или в модели для этого?Вы можете предложить учебник, связанный с ним.Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 20 июня 2011

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

При определении моделей представлений вам не следует думать в терминах таблиц. Таблицы SQL не имеют абсолютно никакого значения в представлении. Подумайте, какую информацию вам нужно показать, и соответственно определите модели представлений.
Следовательно, Вы можете определить модель вида как:

public class ProductInformation
{
...
public string CategoryCode {get; set;}
...
}  

Или public Category ProductCategory.
Вы можете использовать AutoMapper для преобразования между вашими реальными моделями и моделью представления, которую вы определили.

Хороший учебник вы можете найти на http://weblogs.asp.net/shijuvarghese/archive/2010/02/01/view-model-pattern-and-automapper-in-asp-net-mvc-applications.aspx

0 голосов
/ 20 июня 2011

Хотя я не могу ответить на ваш вопрос, вы затрагиваете некоторые интересные моменты.

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

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

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

Надеюсь, это имеет смысл:)

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