使用 ServiceStack 创建复合索引

Create composite index with ServiceStack

我想使用 CreateIndex() 创建一个复合索引,就像我可以为单个列索引那样做,例如:

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

这可能吗?

我的 class 看起来像这样,我想在现有数据库上创建新添加的复合索引 table:

[CompositeIndex(true, nameof(NetworkPart1), nameof(NetworkPart2))]
public class NetworkPart
{
    [Required]
    [Index]
    public Guid NetworkId { get; set; }

    [Required]
    public string NetworkPart1 { get; set; }

    [Required]
    public string NetworkPart2 { get; set; }
}

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

到目前为止,我只能看到不需要额外工具的方法:

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