如何自定义迁移标识列的参数?

时间:2015-09-23 14:23:26

标签: c# entity-framework entity-framework-6 ef-migrations

我有这个简单的模型:

public class Code{
    public int Id { get; set; }
    public string Name { get; set; }
}

在我的域名中。 Id是主键。生成类的迁移将导致此代码:

CreateTable(
    "dbo.Codes",
    c => new {
        Id = c.Int(nullable: false, identity: true),
        Name = c.String(),
    })
    .PrimaryKey(t => t.Id);

这显然会生成这个T-SQL脚本:

CREATE TABLE [dbo].[Codes] (
    [Id] [int] IDENTITY NOT NULL,
    [Name] [nvarchar](max),
    CONSTRAINT [PK_dbo.Codes] PRIMARY KEY ([Id])
)

行。问题是我想自定义标识列的种子和增量值。要做到这一点,生成的脚本需要这个(例如,100000作为种子,23作为增量值):

CREATE TABLE [dbo].[Codes] (
    [Id] [int] IDENTITY (100000, 23) NOT NULL,
    [Name] [nvarchar](max),
    CONSTRAINT [PK_dbo.Codes] PRIMARY KEY ([Id])
)

所以,问题是,如何修改生成的迁移以接受(100000, 23)?有什么办法吗?

更新

似乎我必须注意一些问题(我的英语太糟糕了,如果有些要点没有清除,请原谅我。)

我了解DBCC CHECKIDENT命令。这不是答案。这是因为:

  1. 它只是重新播种标识列。不自定义增量值。

  2. 在创建表格后,它可以正常工作。在我的情况下,我在创建表时尝试完成这项工作。

  3. 为了重置增量值,需要重新创建表 - 据我所知。我不是试图重新设定增量,也不是种子。我试图设置它们。

  4. 问题不在于改变db,还是使用SQL命令等。我很好奇是否可以修改迁移以自定义生成的SQL。

0 个答案:

没有答案