ServiceStack OrmLite - 处理自动增量列默认种子

ServiceStack OrmLite - Handle Auto increment column default seed

如何设置从 1 到 100 的自动递增列种子?? 在 sql 服务器中可以使用

 ADD Id INT NOT NULL IDENTITY(1000,1)

但在 ormlite 中,自动增量属性似乎总是以 1 开头。

也试过

 db.AlterTable<MSchool>("command") // DROP ID AND ADD AUTO INCREMENT COLUMN

它有效,如果 Id 与任何 table 无关。

我可以使用默认种子和增量设置列自动增量吗?

[AutoIncrement(1000,1)]
public int Id {get;set;}

更新

已解决,但不好

public class School
{
    [AutoIncrement]
    public int Id {get;set;}
}

//then create table
db.CreateTable<School>();

//then update seed
db.ExecuteSql("DBCC CHECKIDENT ('School',reseed,1000)");

[PostCreateTable("DBCC CHECKIDENT ('School',reseed,1000)")]
public class School : BaseModel
{
    [AutoIncrement]
    public int Id {get;set;}
}

没有更简单的方法吗??

我个人认为这种行为不属于源代码内部,只会带外修改数据库。

但如果我要在源代码中添加它,我会做类似的事情:

if (db.CreateTableIfNotExists<School>())
{
    db.ExecuteSql("DBCC CHECKIDENT ('School',reseed,1000)");
}

所以它只会在 table 不存在时重置种子。

另一个选项是在运行时将其附加到模型,因此它与 class 定义分离:

typeof(School)
    .AddAttributes(new PostCreateTableAttribute(
        "DBCC CHECKIDENT ('School',reseed,1000)"));