Как просто обновить сущность в рамках сущности? - PullRequest
0 голосов
/ 21 сентября 2010

Я пишу собственный .NET MembershipProvider (не встроенный) и пытаюсь обновить его с помощью Entity Framework. Но, конечно, у меня нет доступа к (Try) UpdateModel. Как я могу обновить его? Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 21 сентября 2010

Вы не можете делать такие вещи с поставщиком членства ASP.NET, то есть записывать пользовательские обновления в таблицы.

Если бы это было так просто, у меньшего количества людей были бы проблемы / проблемы с этим. =)

Даже не беспокойтесь о добавлении таблиц членства в ASP.NET в EDMX - вы не будете знать, как эти таблицы действительно работают вместе. Забудьте о попытке представить его как «модель».

Мой совет: не пытайтесь привязывать членство MembershipProvider в качестве модели (т.е. не создавайте строго типизированное представление), просто вызывайте методы Membership непосредственно из вашего контроллера.

Здесь мы начинаем скучать по «перетаскиванию» веб-форм, не можем попасть на элемент управления ChangePassword. =)

Лучше всего было бы создать обычный вид (не строго типизированный), а затем иметь обычные кнопки, которые публикуют методы контроллера.

Не пытайтесь пройти через объект как модель, получите поля в коллекции Request.Form.

[HttpPost]
public ActionResult ChangePassword()
{
   string userName = Request.Form["userName"];
   string passWord = Request.Form["passWord"];
   MembershipProvider.ChangePassword(userName, password);       
   return View("ChangePasswordSuccess");
}

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

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

0 голосов
/ 21 сентября 2010

Подобный вопрос был задан здесь .

Вот пример приложения CodeProject, которое может помочь вам начать работу с использованием EF и Microsoft MembershipProvider. Созданный ими класс наследуется от MembershipProvider.
http://www.codeproject.com/KB/web-security/EFMembershipProvider.aspx

0 голосов
/ 21 сентября 2010

Сделать это с поставщиком по умолчанию немного сложно, однако гораздо проще было бы создать свой собственный CustomMembershipProvider, как указано здесь:

Реализация поставщика членства

Поскольку вы можете сделать это для своей модели OWN, вы можете кодировать код репозитория / DAL по своему усмотрению и использовать стандартные практики и соглашения EF, позволяющие выполнять простые и строго сопоставленные операции, такие как UpdateModel.

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