#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 нулевым или имеет какое-либо значение. Если значение равно нулю или пусто, вы обязательно получите указанную вами ошибку.
Посмотрите, поможет ли это.