我有一个带有几个表的代码第一个项目,我试图确定对于某个对象,它将被插入的Id将不是sql提供的顺序ID,而是我将提供的Id。
虽然我的存储库中的代码正在正确创建对象,但是一旦将其插入我的数据库中,就会将其分配给:
DbContext.Set<Containers>().Add(entity);
将其作为下一个顺序ID插入。
在我的代码中,首先我所有实体派生的基本实体的Id列是:
public int Id { get; set; }
我正在查看此实体中对Id的更改。 有什么建议吗?
答案 0 :(得分:1)
这是默认行为:当你没有明确地改变它时,EF会在ID上创建一个自动增量列,如果它的类型合适的话。
要更改它,请使用Fluent API:
modelBuilder.Entity<Containers>().Property(x=>x.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
或数据注释:
[DatabaseGenerated(DatabaseGeneratedOption.None)]
也许你必须在此之后运行迁移才能将表改为非自动增量。如果您不想这样做,那么每次您想要这种行为时,您都必须使用包含在事务中的Identity插入。