先编码,使用非顺序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的变化。有什么建议吗?

先编码,使用非顺序Id

这是默认行为:当你不显式地修改它时,EF将在ID上创建一个自动增量列,如果它的类型是合适的。

要修改它,使用Fluent API:

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

或数据注释:

[DatabaseGenerated(DatabaseGeneratedOption.None)]

也许您必须在此之后运行迁移以将表更改为非自动增量。如果你不想这样做,你必须使用身份插入,包装在事务中,每次你想要这个行为。