Entity Framework 代码中的种子主键首先为 SQL 服务器精简版中的 0
Seed primary key in Entity Framework code first to 0 in SQL Server Compact Edition
我先有这个 Entity Framework 代码 class:
public class ClientEvent
{
[Key]
public int? EventCode { get; set; }
public string Description { get; set; }
}
对于 SQL Server Compact Edition 使用此种子函数:
protected override void Seed(ClientEventsContext context)
{
var clientEvent = new ClientEvent
{
EventCode = 0,
Description = "Test"
};
context.Events.Add(clientEvent);
base.Seed(context);
}
当我在 ClientEvent 运行后检查数据库 table 时,我看到了这个条目:
EventCode | Description
---------------------------
1 | Test
注意到 EventCode 是 1 了吗?我希望它是 0。我怎样才能让这个主键从 0 开始?我试过使用上面的代码,但即使使用 0 本身也会将第一个条目设置为 1。
There is another question similar to this which works for SQL Server, but not SQL Server Compact Edition。我尝试使用其建议的答案将初始化程序设置为 0:
context.Database.ExecuteSqlCommand("DBCC CHECKIDENT ('ClientEvents', RESEED, 0)");
问题是:
System.Data.SqlServerCe.SqlCeException: There was an error parsing the
query. [ Token line number = 1,Token line offset = 1,Token in error =
DBCC ]
是否没有一种标准的方法可以先使用 Entity Framework 代码来执行此操作,而与所使用的数据库类型无关?
您可以将此语句与 SQL Server Compact 一起使用:
ALTER TABLE [MyTable] ALTER COLUMN [Id] IDENTITY (0,1)
我先有这个 Entity Framework 代码 class:
public class ClientEvent
{
[Key]
public int? EventCode { get; set; }
public string Description { get; set; }
}
对于 SQL Server Compact Edition 使用此种子函数:
protected override void Seed(ClientEventsContext context)
{
var clientEvent = new ClientEvent
{
EventCode = 0,
Description = "Test"
};
context.Events.Add(clientEvent);
base.Seed(context);
}
当我在 ClientEvent 运行后检查数据库 table 时,我看到了这个条目:
EventCode | Description
---------------------------
1 | Test
注意到 EventCode 是 1 了吗?我希望它是 0。我怎样才能让这个主键从 0 开始?我试过使用上面的代码,但即使使用 0 本身也会将第一个条目设置为 1。
There is another question similar to this which works for SQL Server, but not SQL Server Compact Edition。我尝试使用其建议的答案将初始化程序设置为 0:
context.Database.ExecuteSqlCommand("DBCC CHECKIDENT ('ClientEvents', RESEED, 0)");
问题是:
System.Data.SqlServerCe.SqlCeException: There was an error parsing the query. [ Token line number = 1,Token line offset = 1,Token in error = DBCC ]
是否没有一种标准的方法可以先使用 Entity Framework 代码来执行此操作,而与所使用的数据库类型无关?
您可以将此语句与 SQL Server Compact 一起使用:
ALTER TABLE [MyTable] ALTER COLUMN [Id] IDENTITY (0,1)