在mvc Code First中从10开始Id而不是1从特定点开始自动递增

时间:2017-03-27 14:07:52

标签: model-view-controller code-first

这是我在代码中的模型,我在我的表的索引和标识的正常情况下使用Id作为密钥

    public int Id { get; set; }


    public int Code { get; set; }

    public string Name { get; set; }

    public string Description { get; set; }
    public virtual IEnumerable<Item> Items { get; set; }
    public int MainGroupId { get; set; }
    public virtual MainGroup  mainGroup { get; set; }

我的问题是:如何从代码中的特定点开始自动增量, 当我向数据库添加项目时,在默认模式下 id 从1开始,但我想从10开始,我该怎么做?

1 个答案:

答案 0 :(得分:1)

我认为您可以使用标识列,并自定义数据库初始化或迁移以设置标识列的种子。

执行此操作的T-SQL命令是:

DBCC CHECKIDENT ('Offer', RESEED, 123);

请注意,下一个插入的值不是123,而是123 +增量(如果默认增量为1,则为124)。

您还可以使用带有DatabaseGeneratedOption.Computed的列和序列作​​为字段的默认值(如果您使用的是最新的SQL Server版本)。创建序列时,可以指定初始值和增量:

CREATE SEQUENCE OfferNoSeq
START WITH 1 -- Initial Value
INCREMENT BY 1 -- Increment

将此序列作为OfferNo列的默认值附加,如下所示:

ALTER TABLE Offer ADD CONSTRAINT OfferNoSeq 
DEFAULT (NEXT VALUE FOR OfferNoSeq)  FOR OfferNo;

在Code First中没有直接的方法来实现它。因此,要使用这些选项中的任何一个,您需要

  • [Customize DB Initialization]这是通过实施自己的方式完成的 数据库初始化程序类并从中执行所需的SQL命令 种子方法(寻找公共类的实现 链接文章中的MyInitializer)    或Customize migration:您可以在迁移的Up()或Down()方法中执行任何SQL命令,如 相关答案