我有2个用户表,一个用于保存用户公共信息,一个用于额外信息,他们与UserId字段有一对一的关系。
用户:
UserId >> Primarykey auto increment
UserName
Password
UsersInfo:
UserId >> Primarykey
MoreInfo
在我的应用程序中,当用户注册一个新帐户时,我们在Users表中插入一行,稍后如果他想更改某些信息,我们需要添加到UsersInfo表。
我面临的问题是,当我尝试在UsersInfo表中插入时,它总是告诉我UserId不能为null。虽然我在调用saveChanges之前设置了这个userId。
var info = new UserInfo { UserId = userId, MoreInfo = text };
context.UserInfo.Add(info);
我不知道EF或db中的问题,所以任何信息或要检查的内容都会有所帮助。
答案 0 :(得分:2)
这不是解决方案,而是解决方法。 它可能会起作用:
Users:
----
UserId >> Primary key & Auto increment
UserName
Password
UsersInfo:
----
UsersInfoId >> Primary key auto increment
UserId >> Foreign key & Unique constraint (for one-to-one relation)
MoreInfo
答案 1 :(得分:1)
首先,您不需要使用两个单独的表,除非您每个用户有多组额外信息。如果你使用单个表,那么一个简单的 UPDATE 查询将简化这些事情。
如果你想按照自己的方式行事,首先要测试 userId 是 null 还是有一些价值。如果它为null或为空,则必然会出现您提到的错误。
看看它是否有帮助。