如何首先在Entity Framework代码中为Identity主键设置起始值?

时间:2018-09-17 19:03:20

标签: c# .net sql-server entity-framework-6 code-first

在我的项目中,我首先使用Entity Framework代码创建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; }
}

3 个答案:

答案 0 :(得分:2)

无法使用ef批注,但是您可以在迁移UP方法中执行sql

Sql("DBCC CHECKIDENT ('Appointment', RESEED, 1000)");

答案 1 :(得分:1)

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()")
    },
.
.
.

答案 2 :(得分:0)

只要主键属性的类型为数字或GUID,按照惯例,Code First将自动将键配置为标识列。

来自:EF and identity columns