我有这个类模型:
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/