先编码,使用非顺序Id
本文关键字:顺序 Id 编码 | 更新日期: 2023-09-27 18:18:08
我有一个代码第一个项目与几个表,我试图确定,对于一个特定的对象,它将被插入的Id将不是sql提供的顺序Id,而是一个Id我将提供。
尽管我的存储库中的代码正确地创建了对象,并在将其插入到我的DB中时为其分配了所需的Id:
DbContext.Set<Containers>().Add(entity);
作为下一个顺序Id插入。
在我的代码中,首先为所有实体派生的基本实体的Id列是:
public int Id { get; set; }
我只在这个实体中寻找Id的变化。有什么建议吗?
这是默认行为:当你不显式地修改它时,EF将在ID上创建一个自动增量列,如果它的类型是合适的。
要修改它,使用Fluent API:
modelBuilder.Entity<Containers>().Property(x=>x.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
或数据注释:
[DatabaseGenerated(DatabaseGeneratedOption.None)]
也许您必须在此之后运行迁移以将表更改为非自动增量。如果你不想这样做,你必须使用身份插入,包装在事务中,每次你想要这个行为。