在数据库中创建表后进行数据库迁移后,身份自动增量未应用于“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; }
}
以下是表中生成的列。
有人可以帮助我如何在'Id'栏中干净地应用自动增量。我希望它同时具有主键和自动增量。
修改 我将Id的类型更改为int,但仍然没有应用自动增量。这是截图。
答案 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; }
这解决了我的问题