身份自动增量未应用于列

时间:2018-02-20 09:17:05

标签: c# asp.net-mvc entity-framework asp.net-web-api entity-framework-6

在数据库中创建表后进行数据库迁移后,身份自动增量未应用于“Id”列,而主键约束已应用于它。     以下是Model类代码。

public class Subscription
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public string Id { get; set; }
    public string domainName { get; set; }
    public string articleID { get; set; }
    public string tld { get; set; }
    public string customerID { get; set; }
    public string customerName { get; set; }
    public string price { get; set; }
    public string nextBillDate { get; set; }

}

以下是表中生成的列。

enter image description here

有人可以帮助我如何在'Id'栏中干净地应用自动增量。我希望它同时具有主键和自动增量。

修改 我将Id的类型更改为int,但仍然没有应用自动增量。这是截图。

enter image description here

3 个答案:

答案 0 :(得分:1)

它的类型should be int使其成为身份:

public int Id { get; set; }

答案 1 :(得分:1)

好的,将您的ID从string更改为int后问题仍然存在,我建议您删除数据库(如果您不关心数据)并删除迁移来自Visual Studio的文件。从程序中删除迁移文件很重要,因为有时它无法识别所有更改。 或者,您可以在迁移文件中手动添加这行代码(可能不推荐,但如果没有任何帮助,这将有所帮助):

identity: true

所以,看起来应该是这样的:

CreateTable("dbo.Table",
            c => new
            {
                Id= c.Int(nullable: false, identity: true),
                ...
            })
            .PrimaryKey(t => t.Id)
            ...

答案 2 :(得分:0)

如果您有这样的事情,

private int _id = -1; 
public int Id {get => _name; set => _name = value};

只需将其删除并尝试一下,

[DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
public int Id { get; set; }

这解决了我的问题