在一对一关系表中插入新记录

时间:2011-10-15 13:52:06

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

我有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中的问题,所以任何信息或要检查的内容都会有所帮助。

2 个答案:

答案 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或为空,则必然会出现您提到的错误。

看看它是否有帮助。