c# - EF6 Code First Key 不会自动递增

标签 c# entity-framework entity-framework-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; }
}

出于某种原因,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);

我还添加了:

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

到我的数据库上下文,但迁移仍然不会使该字段自动递增。任何人都可以看到我哪里做错了吗?

谢谢。

保罗。

最佳答案

sql server 不支持更改列以添加标识功能。 当你的表被创建时,你不想丢失你的数据,你不能自动完成, 备份您的表,删除该列(在 EF 中忽略),然后使用 EF 重新创建您的表或列,然后恢复您的值

关于c# - EF6 Code First Key 不会自动递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25353330/

相关文章:

c# - MVVM - listview itemsSource 绑定(bind)不同于 listview 元素的绑定(bind)

sql-server - Entity Framework 为我提供了旧数据,尽管我更改了它们

c# - 如何使用 Entity Framework 从mysql获取最后插入的id

C# - Process.Start() 操作被用户取消

c# - .NET Core 配置管理器,读取一个键里面有一个冒号的字典,给出一个关于值的奇怪的错误消息,这是预期的吗?

sql - 与直接运行存储过程相比, Entity Framework ExecuteStoreQuery 速度较慢

c# - 在 Entity Framework 代码优先迁移中删除移动的属性

c# - Entity Framework 创建的主键不会自动递增

c# - 在生产环境中使用代码优先降级(回滚)数据库

c# - 类似于 List<> 语法的对象初始化