在SQL Server精简版中,实体框架代码中的主键优先为0

本文关键字:框架 Server SQL 精简版 实体 代码 | 更新日期: 2023-09-27 18:14:18

我有这个实体框架代码的第一个类:

public class ClientEvent
{
    [Key]
    public int? EventCode { get; set; }
    public string Description { get; set; }
}

SQL Server精简版:

protected override void Seed(ClientEventsContext context)
{
    var clientEvent = new ClientEvent
    {
        EventCode = 0,
        Description = "Test"
    };
    context.Events.Add(clientEvent);
    base.Seed(context);
}

当我检查数据库表中的ClientEvent运行后,我看到这个条目:

EventCode   |   Description
---------------------------
1           |   Test

注意EventCode是1吗?我希望它是0。我如何让这个主键从0开始?我已经尝试使用上面的代码,但即使使用0本身也会将第一个条目设置为1。

还有一个类似的问题,适用于SQL Server,但不适用于SQL Server精简版。我尝试使用它建议的答案将初始化项设置为0:

context.Database.ExecuteSqlCommand("DBCC CHECKIDENT ('ClientEvents', RESEED, 0)");

问题是:

System.Data.SqlServerCe。对象解析错误查询[令牌行号= 1,令牌行偏移量= 1,令牌错误= .DBCC]

是否有一个标准的方法来做这个与实体框架代码首先,无关的数据库的类型正在使用?

在SQL Server精简版中,实体框架代码中的主键优先为0

SQL Server Compact:

ALTER TABLE [MyTable] ALTER COLUMN [Id] IDENTITY (0,1)