asp.net mvc:usersContext.SaveChanges()保存null而不是给定值;只在天蓝色

时间:2013-06-25 10:11:56

标签: c# asp.net linq azure

我的注册过程会创建一个新用户,询问新创建的用户的ID,并将其用作表中的键,其中包含以下代码的附加信息:

String confirmationToken = WebSecurity.CreateUserAndAccount(
    model.Email,
    model.Password,
    null,
    true
);

UsersContext usersContext = new UsersContext();
User user = usersContext.Users.First(e => e.Email == model.Email);

PersonalInformation personalInformation = new PersonalInformation() {
    UserID = user.UserID,
    FirstName = model.FirstName,
    LastName = model.LastName
};

usersContext.PersonalInformation.Add(personalInformation);
usersContext.SaveChanges();

这在我的本地机器上工作正常,但是当我在azure上发布时。它只是创建用户/帐户但失败了: 无法将值NULL插入列'UserID',表'optindb.dbo.PersonalInformation';

当我查看数据库时,我可以看到用户表中填充了电子邮件,当然还有id作为主键。

所以我的猜测是,“usersContext.Users.First”返回null,但我无法弄清楚为什么...... 我是否必须使用“WebSecurity.CreateUserAndAccount”执行一些特殊操作,以便在我要求ID之前确定它已保存到数据库中?

欢迎任何帮助。


修改

在阅读了这篇文章后面的评论后,我仔细研究了“Users.First”值和注册邮件的价值,发现它确实正常,并且其中包含ID值。

所以真正的问题必须在这一部分:

PersonalInformation personalInformation = new PersonalInformation() {
    UserID = user.UserID,
    FirstName = model.FirstName,
    LastName = model.LastName
};

usersContext.PersonalInformation.Add(personalInformation);
usersContext.SaveChanges();

值在personalInformation对象中设置,但在保存usersContext时,它想要保存NULL而不是存储在对象中的userID。无法理解这里发生的事情......

0 个答案:

没有答案