代码优先,使用非顺序ID

时间:2015-10-18 09:36:44

标签: c# entity-framework code-first

我有一个带有几个表的代码第一个项目,我试图确定对于某个对象,它将被插入的Id将不是sql提供的顺序ID,而是我将提供的Id。

虽然我的存储库中的代码正在正确创建对象,但是一旦将其插入我的数据库中,就会将其分配给:

DbContext.Set<Containers>().Add(entity);

将其作为下一个顺序ID插入。

在我的代码中,首先我所有实体派生的基本实体的Id列是:

public int Id { get; set; }

我正在查看此实体中对Id的更改。 有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这是默认行为:当你没有明确地改变它时,EF会在ID上创建一个自动增量列,如果它的类型合适的话。

要更改它,请使用Fluent API:

modelBuilder.Entity<Containers>().Property(x=>x.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

或数据注释:

[DatabaseGenerated(DatabaseGeneratedOption.None)]

也许你必须在此之后运行迁移才能将表改为非自动增量。如果您不想这样做,那么每次您想要这种行为时,您都必须使用包含在事务中的Identity插入。