@Mindgrow

ASP MVC — Правильно ли использовать сущности EntityFramework в качестве модели для вывода данных на View?

Добрый день.

Есть база данных, с которой я работаю через EF. Есть сущность EF - ApplicationUser. Есть страница View, на котором выводится список пользователей (ApplicationUser).

Правильно ли, если я буду использовать в качестве модели View тип ApplicationUser, которые я буду выгружать из EntitytFramework и загружать на страницу?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 2
byte916
@byte916
Обычно EF добавляет в свои сущности контекст, и в итоге (теоретически) это будет работать медленнее и кушать больше памяти.
Да и как правило все поля сущности не нужны, но бывают нужны поля которых в сущностях нет.
Плюс, если вам понадобится добавить во View какое-то поле, то проще будет изменить модель а не сущность ef.

Короче говоря, ничто не мешает использовать сущности во view, но это не правильно, лучше создавать отдельные модели для вывода.
Ответ написан
@Akaero
Для потренироваться - да.
Однако есть ньюанс, предположим, что пользователей у вас 100. Выводить такой список без постраничного вывода не очень классно, поэтому лучше сразу это предусмотреть и сделать класс (к примеру, AppUserViewModel) в котором будут следующие свойства:
1. PageNumber - номер запрашиваемой страницы
2. Count - количество пользователей, которые хотим взять из базы
3.ICollection<ApplicationUser> User {get;set;}

Так вот, эту модельку можно уже получать в методе контроллера и отдавать ее во вью, так у Вас будет более структурированный код.

Можно пойти еще дальше. Вам вряд ли все поля в ApplicationUser нужны (я полагаю, что речь идет о классе из Identity). Поэтому, чтобы во вью не передавать всякие ненужные для представления поля (хеш пароля, дата создания и тд) можно в нашей
AppUserViewModel
вместо
ICollection<ApplicationUser> Users {get; set;}
сделать
ICollection<ApplicationUserViewModel>  Users {get; set;}
- то есть создать отдельный класс, который служит для отображения информации об пользователе, но если в классе ApplicationUser у вас было, к примеру, 10 полей, то в классе ApplicationUserViewModel сделайте только те поля, которые вам нужны для отображения. И перед передачей модели в представление просто создавайте коллекцию этих ApplicationUserViewModel, копируя туда нужную инфу.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы