C# ASP.NET MVC实体框架Id不能为null

C# ASP.NET MVC实体框架Id不能为null,c#,asp.net,asp.net-mvc,entity-framework,asp.net-identity,C#,Asp.net,Asp.net Mvc,Entity Framework,Asp.net Identity,谈到ASP标识,我创建了一个新表,即使用代码优先和迁移的自定义表(代码如下)。当我尝试使用DbContext插入该表时,我发现entity framework中的id不能为null错误。我尝试使用id和注释作为computed/identity,错误是相同的 当然,我错过了一些东西,但我不知道是什么 public class AspNetCountryTable { [Key] [DatabaseGenerated(DatabaseGeneratedOpt

谈到ASP标识,我创建了一个新表,即使用代码优先和迁移的自定义表(代码如下)。当我尝试使用DbContext插入该表时,我发现entity framework中的id不能为null错误。我尝试使用id和注释作为computed/identity,错误是相同的

当然,我错过了一些东西,但我不知道是什么

public class AspNetCountryTable
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public String Id { get; set; }
        public String CountryName { get; set; }
        public String CountryCode { get; set; }
    }
我想做的是像asp identity为用户生成Id那样自动生成Id(字符串)


谢谢

必须在迁移脚本newsequentialid()中添加SQL级别Id列作为uniqueidentifier,而不是字符串和默认SQL值必须在SQL级别Id列作为uniqueidentifier,而不是在迁移脚本newsequentialid()中添加字符串和默认SQL值

您是否更新了数据库,使其实际生成了一个ID?@Fabiano我使用添加迁移“new\u migration\u name”并从包控制台更新数据库来生成(理论上)新的sql表。还有其他事情要做吗?请尝试使用
[DatabaseGenerated(DatabaseGeneratedOption.None)]
而不是
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
?字符串是可为空的类型,因此,与应用
DatabaseGeneratedOption.Identity
选项时的
int
不同,它不使用计算值。尝试使用
[DatabaseGenerated(DatabaseGeneratedOption.None)]
,或者执行类似的步骤,但不使用GUID存储字符串。SQL会从
字符串生成标识列吗?您是否更新了数据库以使其实际生成ID?@Fabiano我使用了添加迁移“new\u migration\u name”并从包控制台更新数据库以生成(理论上)新的sql表。还有其他事情要做吗?请尝试使用
[DatabaseGenerated(DatabaseGeneratedOption.None)]
而不是
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
?字符串是可为空的类型,因此,与应用
DatabaseGeneratedOption.Identity
选项时的
int
不同,它不使用计算值。尝试使用
[DatabaseGenerated(DatabaseGeneratedOption.None)]
,或者执行类似的步骤,但它存储字符串而不是GUID。SQL从
字符串生成标识列的期望是什么?