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)"));
如何设置从 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)"));