c# - 实体框架代码优先:生产环境 - Id 不能为空
问题描述
当我在开发中运行我的应用程序(通过 VS)时,我可以将用户添加到我的本地数据库中。但是在发布我的应用程序并创建基于云的数据库后,尝试创建新用户时出现以下错误:
无法将值 NULL 插入到列“Id”、表“MyDb.dbo.Users”中;列不允许空值。插入失败。
我通过 SQL Server Management Studio 将本地数据库的内容复制到了基于云的数据库中。
EF 和我的生产数据库之间是否存在某种不一致?我尝试将默认连接设置为云数据库(在 Prod 和 Dev appsettings.json 中)然后运行update-database
,但它说数据库是最新的。
当我不必在开发环境中这样做时,我不会怀疑我需要显式添加属性[key]
和/或在生产中......我会吗?[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
用户模型
public class User
{
public int Id { get; set; }
public string Username { get; set; }
...
}
更新
经过进一步检查,生产数据库未将 ID 列显示为 PK。数据库中的所有表都不能识别应该是 PK 和 FK 的列。显然EF和生产环境之间存在脱节......但我仍然不知道如何解决它?