如何首先在 Entity Framework 代码中设置身份主键的起始值?
How to set starting value for an Identity primary key in Entity Framework code first?
在我的项目中,我首先使用 Entity Framework 代码创建 Appointments
table。当我将整数主键 AppointmentNo
设置为 [Key]
和 [Required]
时,它会创建初始主键从 1 开始的 table。
我希望预约号码从 1000 开始。我的数据库是 SQL 服务器。请帮我。先感谢您。
[DataContract]
public class Appointment
{
[DataMember]
[Key]
[Required]
public int AppointmentNo { get; set; }
[DataMember]
[Required]
public string DoctorUN { get; set; }
[DataMember]
[Required]
public string PatientUN { get; set; }
}
只要主键 属性 的类型是数字或 GUID,按照惯例,Code First 会自动将键配置为标识列。
来自:
无法使用ef注解,但可以在迁移UP方法中执行sql
Sql("DBCC CHECKIDENT ('Appointment', RESEED, 1000)");
EF 核心 3.1
您可以打开迁移脚本并在更新数据库之前对其进行编辑。
EF 为标识列创建了这一行:
.Annotation("SqlServer:Identity", "1, 1"),
您可以将其更新为您想要的任何内容:
.Annotation("SqlServer:Identity", "你的起始值,你的增量值"),
示例:如果我希望 tblOrder 上的 OrderId 列从 1000 开始并递增 1:
migrationBuilder.CreateTable(
name: "tblOrder",
schema: "dbo",
columns: table => new
{
OrderID = table.Column<int>(nullable: false)
.Annotation("SqlServer:Identity", "1000, 1"),
CDate = table.Column<DateTime>(nullable: false, defaultValueSql: "getdate()")
},
.
.
.
在 entity framework 中,您可以这样做:
builder.Entity<EntityName>(b =>
{
b.ToTable("TabelName");
b.Property(x => x.ColumnName).ValueGeneratedOnAdd().UseIdentityColumn(1000,1);
});
在我的项目中,我首先使用 Entity Framework 代码创建 Appointments
table。当我将整数主键 AppointmentNo
设置为 [Key]
和 [Required]
时,它会创建初始主键从 1 开始的 table。
我希望预约号码从 1000 开始。我的数据库是 SQL 服务器。请帮我。先感谢您。
[DataContract]
public class Appointment
{
[DataMember]
[Key]
[Required]
public int AppointmentNo { get; set; }
[DataMember]
[Required]
public string DoctorUN { get; set; }
[DataMember]
[Required]
public string PatientUN { get; set; }
}
只要主键 属性 的类型是数字或 GUID,按照惯例,Code First 会自动将键配置为标识列。
来自:
无法使用ef注解,但可以在迁移UP方法中执行sql
Sql("DBCC CHECKIDENT ('Appointment', RESEED, 1000)");
EF 核心 3.1 您可以打开迁移脚本并在更新数据库之前对其进行编辑。 EF 为标识列创建了这一行: .Annotation("SqlServer:Identity", "1, 1"),
您可以将其更新为您想要的任何内容:
.Annotation("SqlServer:Identity", "你的起始值,你的增量值"),
示例:如果我希望 tblOrder 上的 OrderId 列从 1000 开始并递增 1:
migrationBuilder.CreateTable(
name: "tblOrder",
schema: "dbo",
columns: table => new
{
OrderID = table.Column<int>(nullable: false)
.Annotation("SqlServer:Identity", "1000, 1"),
CDate = table.Column<DateTime>(nullable: false, defaultValueSql: "getdate()")
},
.
.
.
在 entity framework 中,您可以这样做:
builder.Entity<EntityName>(b =>
{
b.ToTable("TabelName");
b.Property(x => x.ColumnName).ValueGeneratedOnAdd().UseIdentityColumn(1000,1);
});