2015-11-17 3 views
0

Просто представьте, что у меня есть модель с 20 полями, и у меня 1000 записей сейчас , но моя база данных растет каждый день, тогда я хочу перечислить их на странице бритвы и показать все из них, но всего 5 полей необходимо ,Модель Entity Framework или модель представления данных?

Я просто хочу знать, нормально ли, если я верну модель со всеми полями в мое представление и выберем поля, которые мне нужны в моем представлении, или я должен создать viewModel с теми полями, которые мне просто нужны? Меня беспокоит производительность.

+0

Когда вы беспокоитесь о производительности, измерьте. –

ответ

4

Определенно создайте viewmodel, чтобы выставить только нужные вам поля. Не раскрывайте никаких полей, которые вам не нужны для производительности и, возможно, из соображений безопасности.

0

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

О чем бы я беспокоился - это организация вашего кода. Вы хотите связать свои взгляды с моделями баз данных? Если с тобой все в порядке, чем пойти на это!

Редактировать: Я по-прежнему считаю, что решение о возврате модели или не должно основываться на потенциальных результатах производительности, а не на вашей организации кода.

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

Grid.Mvc Telerik

+0

Вы знаете, моя база данных растет каждый день, а как насчет будущего? Я испытал, что если я хочу иметь некоторые условия для избранных записей, я должен выбрать только нужные мне поля, но как насчет выбора всех записей без каких-либо условий? просто представьте себе, что в следующем году у меня будет 1 000 000 записей. Что вы имеете в виду о парах взглядов на модели баз данных? –

+0

Миллион записей можно было бы упомянуть в вопросе, где вы говорите тысячу. https://www.stevefenton.co.uk/2013/03/Why-You-Never-Expose-Your-Domain-Model-As-Your-MVC-Model/ –

+0

Если у вас миллион записей, то факт, что вы включая все столбцы, не будет вашим хитом производительности. Это будет миллион записей. Затем вам нужно начать думать о разбиении на страницы/загрузке. Я бы удалил 1000 часть вашего вопроса. – hatcyl

0

С вами ViewModel может инкапсулировать свои свойства лишь проходя поля, которые необходимы на этой странице. Когда вы работаете с большим количеством полей, тогда да, возможно, будет увеличение производительности при использовании ViewModel. И с помощью ViewModal вы сохраняете свое приложение в чистоте и вся логика разделяется. :)

1

Конечно, вы можете отфильтровать данные на стороне сервера или на стороне клиента. Но лучший подход - это фильтрация данных на стороне сервера, чтобы максимально снизить нагрузку на сервер и сетевой трафик. Это также делает ваше приложение более отзывчивым и с лучшей производительностью. Используйте интерфейс IQueryable для фильтрации на стороне сервера (уточните here для получения дополнительной информации).

Один из побочных эффектов использования фильтрации на стороне сервера имеет лучшую безопасность.