Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架代码优先:生产环境-Id不能为null_C#_Entity Framework_Asp.net Core - Fatal编程技术网

C# 实体框架代码优先:生产环境-Id不能为null

C# 实体框架代码优先:生产环境-Id不能为null,c#,entity-framework,asp.net-core,C#,Entity Framework,Asp.net Core,当我在开发中运行我的应用程序(通过VS)时,我可以将用户添加到本地数据库中。但在发布我的应用程序并创建基于云的数据库后,我在尝试创建新用户时出现以下错误: 无法将值NULL插入到“Id”列、表“MyDb.dbo.Users”中;列不允许空值。插入失败 我通过SQLServerManagementStudio将本地数据库的内容复制到基于云的数据库中 EF和我的生产数据库之间是否存在某种不一致?我尝试设置到clould DB的默认连接(Prod和Dev appsettings.json中),然后运行

当我在开发中运行我的应用程序(通过VS)时,我可以将用户添加到本地数据库中。但在发布我的应用程序并创建基于云的数据库后,我在尝试创建新用户时出现以下错误:

无法将值NULL插入到“Id”列、表“MyDb.dbo.Users”中;列不允许空值。插入失败

我通过SQLServerManagementStudio将本地数据库的内容复制到基于云的数据库中

EF和我的生产数据库之间是否存在某种不一致?我尝试设置到clould DB的默认连接(Prod和Dev appsettings.json中),然后运行
update database
,但它说DB是最新的

我不会怀疑我需要在产品中明确添加属性
[key]
和/或
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
,而我不必在开发环境中这样做。。。我会吗

用户模型 更新
进一步检查后,生产数据库不会将ID列显示为PK。DB中的表都无法识别应为PKs和FKs的列。很明显,EF和生产环境之间存在脱节。。。但我仍然不知道如何修复它?

我会比较dev和production User table Id列,看dev是否启用了标识增量。问题是。。。在我的生产数据库中,没有一个表具有键。。。但是为什么呢?在SSMS中进行导出时,不应该复制这些数据吗?为了使数据库投入生产,您到底做了什么?重新计算步骤,因为那里发生了什么事。就迁移而言,EF不会迁移密钥。如果要删除该列,然后将其重新添加,则应将其添加为PK,但不会使现有列成为PK。我已通过SQL Server Management Studio将本地数据库的内容复制到基于云的数据库中。如果不这样做,请让EF创建数据库。一些EF核心提供商的行为因使用的数据库版本而异(例如,Pomelo MySQL提供商的行为取决于目标是5.5还是5.7)。我不确定您是否能从SSMS*中获得PK/FK,除非您使用“生成脚本”,甚至这是您必须选择的(许多)选项之一(*当然不算做备份/恢复)。但您自己也说过,您使用了数据导出向导,我不希望出现键/约束/索引(尽管可能是错误的,我已经有一段时间没有在SSMS中使用该特定工具了)
public class User
{
    public int Id { get; set; }

    public string Username { get; set; }

    ...
}