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

时间:2015-11-06 11:42:15

标签: servicestack ormlite-servicestack

如何设置1到100的自动增量列种子? 在sql server中可以使用

 ADD Id INT NOT NULL IDENTITY(1000,1)

但在ormlite自动增量属性中似乎始终以1开头。

也尝试了

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

如果Id与任何表格无关,它都有效。

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

[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)");

OR

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

有没有更简单的方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

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

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

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

因此,如果表不存在,它只会重置种子。

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

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