ASP.NET MVC3 Entity со страницами ViewModel CRUD - PullRequest
1 голос
/ 29 сентября 2011

Я использую EF со стратегиями проектирования ViewModel и AutoMapper для приложения MVC3.

Мне интересно, есть ли более эффективный способ создания страниц CRUD, чем то, что я сейчас делаю.

Мой текущий процесс включает в себя:

  • Создание объекта
  • Создание ViewModel с помощью копирования и вставки, а затем удаление ненужных полей
  • Добавление объекта вКонтекстный список
  • Создание контроллера с помощью Visual Studio 2010 Создание контроллера Мастер Страница.
  • Я выбираю Шаблон контроллера с действиями чтения-записи и представлениями, используя Entity Framework.
  • Я выбираю свою модель в качестве моей ViewModel вместо моей сущности.
  • Я выбираю соответствующий контекст.
  • Теперь часть I, которую я думаю, может бытьулучшено , я должен переписать все методы CRUD для использования AutoMapper и изменения шаблона проектирования Entity / ViewModel:

return View(db.BlockedUserViewModels.ToList());

в:

IList<BlockedUser> blockedUsers = db.BlockedUsers.ToList();
IList<BlockedUserViewModel> blockedUserVMs = AutoMapper.Mapper.Map<IList<BlockedUser>, IList<BlockedUserViewModel>>(blockedUsers);
return View(blockedUserVMs);
  • Я должен добавитьодинаковые права доступа [Authorize] и ролей для каждого параметра CRUD для контроллера.

Кажется, что это избыточно в рабочей нагрузке!Я надеюсь, что есть лучшее решение.(Я пришел из Python / Django, где требуется одна строка кода для создания красивых сильных страниц CRUD)

Ответы [ 2 ]

2 голосов
/ 29 сентября 2011

Похоже, вы можете добавить сервис и добавить его в свой контроллер. Тогда вам нужно только позвонить

var model = _service.GetBlockedUsers();

каждый раз вместо:

IList<BlockedUser> blockedUsers = db.BlockedUsers.ToList();
IList<BlockedUserViewModel> blockedUserVMs = AutoMapper.Mapper.Map<IList<BlockedUser>, IList<BlockedUserViewModel>>(blockedUsers);

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

Кроме того, вы можете добавить атрибут [Authorize] к контроллеру, если он применяется к каждому действию в контроллере.

1 голос
/ 29 сентября 2011

Это действительно зависит от того, насколько это болезненно для вас, но вы всегда можете использовать материал для строительных лесов MVC, найденный в Nuget и написанный Стивеном Сандерсоном. Вложение времени может помочь вам в долгосрочной перспективе, но вы должны выяснить, подходит ли это вам.

http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/

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