创建没有自动递增 ID 的 Entity Framework Table

Creating Entity Framework Table That Does Not Have Auto Increment Id

使用 Entity Framework SQL-Server-CE 我创建了一个 table 这样的:

class Era {
    public long Id { get; set; }
    [Index(IsUnique=true), Required]
    public long Code { get; set; }
    public string Name { get; set; }
    public long StartDate { get; set; }
    public long EndDate { get; set; }
}

每当我尝试使用 Entity Framework 插入其中时,Era 对象的 Id 字段将被忽略,并插入一个自动递增的 Id

如何使 Id 字段不使用自动增量值,而是使用给定值,最好使用注释。

我认为你需要:

[DatabaseGenerated(DatabaseGeneratedOption.None)]

默认是数据库生成一个值,所以你需要明确地关闭它。

[DatabaseGenerated(DatabaseGeneratedOption.None)] 

这可确保 EF 不会尝试更改值,而只会将它们与其余数据一起插入。

这里有详细的描述link

这就是我要找的答案:

如果你想在 entity framework 中使用非自动递增 ID 的 table;您需要先备份数据,删除table(这可以通过在您的DbContext class中注释相关的DbSet来完成),添加注释[DatabaseGenerated(DatabaseGeneratedOption.None)] 然后迁移和更新数据库。