首页 > 解决方案 > 实体框架代码优先:生产环境 - 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和生产环境之间存在脱节......但我仍然不知道如何解决它?

标签: c#entity-frameworkasp.net-core

解决方案


推荐阅读