EF6 Code First Key不自动递增

pau*_*ord 3 c# entity-framework ef-migrations

我有这个班级模型:

public class Results
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public int GameId { get; set; }
    public Games Game { get; set; }
    public string Notes { get; set; }
    public virtual ICollection<ResultItems> ResultItems { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,Id字段不会根据模式设置为自动递增:

CREATE TABLE [dbo].[Results] 
(
    [Id]     INT            NOT NULL,
    [GameId] INT            NOT NULL,
    [Notes]  NVARCHAR (MAX) NULL,

    CONSTRAINT [PK_dbo.Results] PRIMARY KEY CLUSTERED ([Id] ASC),
    CONSTRAINT [FK_dbo.Results_dbo.Games_GameId] 
        FOREIGN KEY ([GameId]) REFERENCES [dbo].[Games] ([Id]) ON DELETE CASCADE
);
GO

CREATE NONCLUSTERED INDEX [IX_GameId] ON [dbo].[Results]([GameId] ASC);
Run Code Online (Sandbox Code Playgroud)

我还补充说:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
        modelBuilder.Entity<Results>().HasKey(p => p.Id).Property(p => p.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        base.OnModelCreating(modelBuilder);
}
Run Code Online (Sandbox Code Playgroud)

到我的数据库上下文但仍然迁移不会使此字段自动增加.谁能看到我做错了什么?

谢谢.

保罗.

mor*_*hai 5

sql server不支持alter column for add identity功能.当你的表被创建,并且你不想丢失你的数据时,你不能自动完成,备份你的表,删除列(在EF中忽略),并用EF重新创建你的表或列,abd恢复你的值