Вставка новой записи во взаимно однозначные реляционные таблицы

#c# #asp.net-mvc #sql-server-2008 #entity-framework

#c# #asp.net-mvc #sql-server-2008 #entity-framework

Вопрос:

У меня есть 2 таблицы для пользователей, одна для хранения общей информации пользователя и одна для дополнительной информации, они имеют отношение один к одному с полем userId.

Пользователи:

 UserId >> Primarykey auto increment  
UserName  
Password
  

UsersInfo:

 UserId >> Primarykey  
MoreInfo
  

в моем приложении, когда пользователь регистрирует новую учетную запись, мы вставляем строку в таблицу Users, а позже, если он захочет изменить какую-то информацию, нам нужно добавить в таблицу UsersInfo.

Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь вставить в таблицу UsersInfo, она всегда сообщает мне, что идентификатор пользователя не может быть нулевым. пока у меня есть этот идентификатор пользователя, установленный перед вызовом SaveChanges.

 var info = new UserInfo { UserId = userId, MoreInfo = text };
context.UserInfo.Add(info);
  

Я не знаю, проблема в EF или в db, поэтому любая информация или что-то, что нужно проверить, поможет.

Ответ №1:

Это не решение, а обходной путь. Вероятно, это сработает:

 Users:
----
UserId >> Primary key amp; Auto increment
UserName
Password

UsersInfo:
----
UsersInfoId >> Primary key auto increment
UserId >> Foreign key amp; Unique constraint (for one-to-one relation)
MoreInfo
  

Ответ №2:

Во-первых, вам не нужно использовать две отдельные таблицы, за исключением случаев, когда у вас есть несколько наборов дополнительной информации для каждого пользователя. Если вы используете единую таблицу, то простой запрос на ОБНОВЛЕНИЕ упростит задачу.

Если вы хотите пойти своим путем, сначала проверьте, является ли userId нулевым или имеет какое-либо значение. Если значение равно нулю или пусто, вы обязательно получите указанную вами ошибку.

Посмотрите, поможет ли это.