2013-08-23 4 views
0

Я вызываю метод CreateUserAndAccount, предоставляя String в имени пользователя и пароле. Но я получаю исключение, говорящее, что строка с жестким кодом имеет значение NULL. Как это возможно!?! I-m пропустил что-то здесь?WebSecurity CreateUserAndAccount

Код: WebSecurity.CreateUserAndAccount("Admin", "Admin", null, false);

SqlException: Невозможно вставить значение NULL в столбец 'UserPwd', таблицу 'servidb.dbo.User'; столбец не допускает нулей. INSERT терпит неудачу.

Я изменил имя таблицы из поля UserProfile в столбце User and Password. Может быть здесь ошибка?

С уважением.

ps: Я не знаю, что еще из кода для показа. Если вам нужна дополнительная информация, пожалуйста, спросите.

редактировать: На самом деле я сделал:

WebSecurity.InitializeDatabaseConnection("connectionString", "User", "UserId", "UserName", autoCreateTables: true);

И я проверил БД и таблицу User был создан с колонкой. Моя сущность кода это один

[Table("User")] 
public class User 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int UserId { get; set; } 
    [Required] 
    public string UserName { get; set; } 
    [Required] 
    public string UserPwd { get; set; } 
} 
+0

вы используете EF ? Если да, вы можете изменить значение Autogeneratetables на false. – Nilesh

+0

Я тоже хотел бы отметить, что это код. Установите автосоздание на значение false, но все еще происходит. –

+0

Можете ли вы попытаться создать пользователя отдельно, а затем с помощью 'CreateAccount' создать учетную запись в таблице memebership? Посмотрите, работает ли это. – Nilesh

ответ

0

Это, вероятно, потому, что вы изменили эти имена столбцов, WebSecurity знает себя, какие колонки использовать, он фактически использует собственный созданные таблицы, для таблицы с именами пользователей, за исключением. Вероятно, это в вашем InitializeSimplemembership.cs, если вы работаете в интернет-шаблоне.

WebSecurity.InitializeDatabaseConnection([here database username], 
[here database password], [here YOUR talbe name containing user name column], 
[here user name column] , autoCreateTables: true); 

Таким образом, вы создать только одну таблицу с колонкой UserName и все, остальное создается WebSecurity в новых таблицах.

+0

THX для ответа. Я редактировал сообщение. Resumen, столбец UserPwd создается на пользователе таблицы –

0

Попробуйте это:

WebSecurity.CreateUserAndAccount("Admin", "Admin", new {UserPwd = ""}, false) 

3-й параметр представляет собой анонимный объект, который можно использовать, чтобы поставить ваши Required поля так, что ваш SQL получает все ненулевые значения, необходимые

Смежные вопросы