ormlite-servicestack,C#,ormlite Servicestack" /> ormlite-servicestack,C#,ormlite Servicestack" />

C# 使用ServiceStack创建复合索引

C# 使用ServiceStack创建复合索引,c#,ormlite-servicestack,C#,ormlite Servicestack,我想使用CreateIndex()创建一个复合索引,就像我可以对单列索引执行此操作一样,例如: db.CreateIndex<NetworkPart>(np => np.NetworkId); [CompositeIndex]属性仅用于定义OrmLite使用db.CreateTable创建的表定义,即它们不用于在运行时创建索引。到目前为止,我只能看到这样做,而不需要额外的工具: var createIndexStatements = db.GetDialectProvider

我想使用
CreateIndex()
创建一个复合索引,就像我可以对单列索引执行此操作一样,例如:

db.CreateIndex<NetworkPart>(np => np.NetworkId);

[CompositeIndex]
属性仅用于定义OrmLite使用
db.CreateTable
创建的表定义,即它们不用于在运行时创建索引。

到目前为止,我只能看到这样做,而不需要额外的工具:

var createIndexStatements = db.GetDialectProvider().ToCreateIndexStatements(typeof(NetworkPart));
var createIndexStatement = createIndexStatements.FirstOrDefault(stmt => stmt.Contains("uidx_networkpart_networkpart1_networkpart2"));
db.ExecuteSql(createIndexStatement);

我知道,但我在创建表之后添加了这个索引。现在,我需要“迁移”与更改的类匹配的现有表。目前我是这样做的:
var createIndexStatements=db.getDiagnolProvider().ToCreateIndexStatements(typeof(NetworkPart));var createIndexStatement=createIndexStatements.FirstOrDefault(stmt=>stmt.Contains(“uidx\U网络部分\U网络部分1\U网络部分2”);db.ExecuteSql(createIndexStatement)
是这类任务的一个很好的候选者。@labilbe谢谢,但我想在不需要额外工具的情况下实现这一点。我可以使用ServiceStack的
CreateIndex()
在一列上添加索引,这与我希望使用复合索引所做的相同。
var createIndexStatements = db.GetDialectProvider().ToCreateIndexStatements(typeof(NetworkPart));
var createIndexStatement = createIndexStatements.FirstOrDefault(stmt => stmt.Contains("uidx_networkpart_networkpart1_networkpart2"));
db.ExecuteSql(createIndexStatement);