Короткий ответ -
Вы должны иметь идентификатор столбца (имя его, как вам нравится) типа междунар в таблице профилей пользователей. SimpleMembershipProvider
(SMP) задает два идентификатора нулевого столбца один и второе имя пользователя в таблице UserProfile. Это когда вы выбираете из SimpleMembershipProvider
, что в вашем случае я сомневаюсь, что вам действительно нужно. Если у вас есть какие-либо пользовательские потребности (которые SimpleMembershipProvider
останавливает вас), вы можете получить от MembershipProvider
.
Исключение выбрано потому, что SimpleMembershipProvider
использует внутренний столбец UserId и считается не нулевым.
Чуть более подробно -
Теперь немного более подробно, чтобы помочь вам понять, почему так -
SimpleMembershipProvider
был разработан, чтобы быть гибким, однако его ключевой задачей является обеспечение более простой способ проверки пользователя , Его целью является нацеленность на те 80% веб-приложений, которые имеют общие требования к аутентификации.
Если вы хотите настроить, например, вы хотите добавить пользовательский столбец (адрес электронной почты) в свою таблицу UserProfile (это также имя таблицы), вы можете сделать это. SimpleMembershipProvider
просто ожидает, что у вас будет создана база данных, она может создать таблицу для вас, но таблица должна иметь два обязательных столбца (UserID и UserName).
Для получения дополнительной информации см. Ссылку, опубликованную в комментарии @miller.
Если у вас есть какой-либо последующий вопрос, пожалуйста, поделитесь с более подробной информацией о том, чего вы пытаетесь достичь, создав настраиваемого поставщика.
Edit (ответ на последующие вопросы)
именем столбца может быть что угодно (EmployeeID будет работать, а), то он будет создан как не нулевой Int типа в таблице базы данных. Ваше приложение будет работать до тех пор, пока вы не вызываете метод, который использует UserId. Интересно, как вы создаете нового пользователя. С новым веб-приложением MVC 4, когда вы регистрируете нового пользователя, WebSecurity
переадресуйте вызов на SimpleMembershipProvider
, чтобы создать нового пользователя. SimpleMembershipProvider
Метод CreateUserRow() проверяет, существует ли идентификатор пользователя. Если уже существует, то выдают исключение. После создания пользователя SimpleMembershipProvider
использует UserId для нескольких общедоступных методов, например. GetUserNameFromId(), GetUser(), DeleteUser(), CreateAccount() и т. Д.
То, как членство использует таблицу UserProfile, я боюсь, что вам придется предоставить столбец UserId. Вы также можете получить пользователя с помощью UserName и вообще не будете использовать UserId.
Если вы используете SimpleMembershipProvider
, рассмотрите два столбца таблицы UserProfile, зарезервированные для внутреннего использования. Любая пользовательская логика приложения может быть построена путем добавления большего количества столбцов.
это может помочь http://stackoverflow.com/questions/16704065/how-do-i-use-my-own-database-with-simplemembership-and-websecurity-what-is-mvc4 – Miller