创建没有自动增量ID的实体框架表

时间:2015-06-08 09:28:07

标签: c# sql entity-framework sql-server-ce

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

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("DefaultConnection", throwIfV1Schema: false)
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
}}

每当我尝试使用Entity Framework插入其中时,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; } } 对象的Id字段将被忽略,并且会插入自动递增的Era

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

3 个答案:

答案 0 :(得分:6)

[DatabaseGenerated(DatabaseGeneratedOption.None)] 

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

这里是关于它的详细说明link

答案 1 :(得分:1)

我认为你需要:

[DatabaseGenerated(DatabaseGeneratedOption.None)]

默认情况下,数据库会生成一个值,因此您需要明确地将其关闭。

答案 2 :(得分:0)

所以这就是我要找的答案:

如果你想在实体框架中有一个非自动增量id的表;您需要先备份数据,删除表(这可以通过在DbSet类中注释相关的DbContext来完成),添加注释[DatabaseGenerated(DatabaseGeneratedOption.None)]然后迁移和更新数据库。 / p>