首页 > 解决方案 > ServiceStack.OrmLite:索引的自定义命名可以在代码中完成吗?

问题描述

(我正在运行 ServiceStack OrmLite 5.1.1)

我碰巧有一些名称很长的对象,并且在设置表时创建表现在会创建一个名称很长的表。当 OrmLite 尝试在一个列上创建索引时,它失败了:

无法创建表 co_BookingRecurring_RecurringBookingAdministrationGroup(类型 tWorks.Alfa.AlfaCommons.BookingRecurring.RecurringBookingAdministrationGroup):标识符名称“idx_co_bookingrecurring_recurringbookingadministrationgroup_deleted”太长

所以,我希望IndexAttribute也包含一个构造函数,所以我可以更改它,它会改为idx_deleted,但是没有这样的构造函数或我发现处理它的其他方式。

我找到了INamingStrategy接口和一些示例,但它们似乎不处理索引名称。

有没有办法处理这个问题,以便我可以正常使用 CreateTable?

标签: mysqlindexingservicestackormlite-servicestack

解决方案


我在此提交中添加了对自定义索引名称的支持,这将允许您提供自定义索引名称以代替基于约定的索引名称,例如:

public class Table
{
    [Index(Name = "idx_custom_name")]
    public string Name { get; set; }
}

此更改可从 v5.1.1 开始,现在可在 MyGet 上使用


推荐阅读