如何首先在实体框架代码中设置身份主键的起始值?

Cha*_*era 8 .net c# sql-server code-first entity-framework-6

在我的项目中,我首先使用实体​​框架代码创建Appointments表。当我设置整数主键时,AppointmentNo[Key][Required]时,它会创建初始主键从 1 开始的表。

我希望预约号码从 1000 开始。我的数据库是 SQL Server。请帮我。先感谢您。

[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; }
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*ame 7

在实体框架中你可以这样做:

builder.Entity<EntityName>(b =>
        {
            b.ToTable("TabelName");
            b.Property(x => x.ColumnName).ValueGeneratedOnAdd().UseIdentityColumn(1000,1);
        });
Run Code Online (Sandbox Code Playgroud)


cos*_*set 6

不能使用ef注解,但是可以在迁移UP方法中执行sql

Sql("DBCC CHECKIDENT ('Appointment', RESEED, 1000)");
Run Code Online (Sandbox Code Playgroud)


小智 5

EF Core 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()")
    },
.
.
.
Run Code Online (Sandbox Code Playgroud)