Невозможно вставить значение NULL в столбец UserId

Я получаю это исключение и не могу понять, почему: Cannot insert the value NULL into column 'UserId'

Это мой код:

<asp:TextBox ID="FirstNameBox" runat="server" />
<br />
<br />
<asp:TextBox ID="LastNameBox" runat="server" />
<asp:SqlDataSource
    ID="InsertText"
    runat="server"
    ConnectionString="<%$ ConnectionStrings:DefaultConnection %>"
    InsertCommand="INSERT INTO UserForm (UserId,FirstName,LastName) VALUES  (@UserId,@FiName,@LaName)">

   <InsertParameters>
      <asp:ControlParameter Name="FiName" ControlID="FirstNameBox" PropertyName="Text" />
      <asp:ControlParameter Name="LaName" ControlID="LastNameBox" PropertyName="Text" />
      <asp:Parameter Name="UserId" />
   </InsertParameters>
 </asp:SqlDataSource>

Это то, что у меня есть в моем коде за файлом:

public void button1_Click(object sender, System.EventArgs e)
{
   InsertText.Insert();
}

3 ответа

Решение

Я просто взял идентификатор пользователя и выполнил команду обновления.

Guid userGuid = (Guid)Membership.GetUser(User.Identity.Name).ProviderUserKey;

UserIdLabel.Text = userGuid.ToString();

В настоящее время вы настроили свою таблицу так, чтобы вы ДОЛЖНЫ указать значение для UserId. Если это не запланированное поведение, я бы предложил изменить столбец на SQL-сервере на автоинкрементный...

Например, это должно выглядеть так:

[UserId]       INT            IDENTITY (1, 1) NOT NULL

РЕДАКТИРОВАТЬ на основе комментариев:

Я установил в столбце UserId первичный и внешний ключи. Я установил UserId как GUID. Когда я проверил таблицу, UserId уже там. Я просто хочу добавить имя пользователя или фамилию.

Не уверен, в чем ваша проблема, сначала вы говорите о INSERTТеперь вы говорите о настройке значений для существующей записи. Если хотите update существующая запись, вам нужно сначала получить идентификатор и обновить значения соответственно

Пример команды SQL может выглядеть примерно так:

UPDATE UserForm SET FirstName = @FirstName, LastName = @LastName WHERE UserId = @UserId

Insert выполняет то, что говорит - вставляет новую запись в таблицу.

Вы не устанавливаете никакого значения для столбца userId. если это уже было установлено личность. Вы можете удалить идентификатор пользователя при вставке данных.

Другие вопросы по тегам