ServiceStack.OrmLite:索引的自定义命名可以在代码中完成吗?

问题描述 投票:2回答:2

(我正在运行ServiceStack OrmLite 5.1.1)

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

无法创建表co_BookingRecurring_RecurringBookingAdministrationGroup(键入tWorks.Alfa.AlfaCommons.BookingRecurring.RecurringBookingAdministrationGroup):标识符名称'idx_co_bookingrecurring_recurringbookingadministrationgroup_deleted'太长

所以,我希望IndexAttribute也包含一个构造函数,所以我可以改变它,它将改为idx_deleted,但是没有我找到的这样的构造函数或其他方法来处理它。

我找到了qazxsw poi界面和qazxsw poi,但它们似乎没有处理索引名称。

有没有办法处理这个,所以我可以像往常一样使用CreateTable?

mysql indexing servicestack ormlite-servicestack
2个回答
2
投票

我在INamingStrategy中添加了对自定义索引名称的支持,这将允许您提供要使用的自定义索引名称,而不是基于约定的索引名称,例如:

some examples

此更改可从v5.1.1获得,现在是this commit


0
投票

计划A:避免使用用户定义的长名称:“RecurringBookingAdministrationGroup”

计划B :(或者OrmLite可能有错误):不要在表格中的任何名称中包含表名(“BookRecurring”?)(除了'id'除外)。

计划C:让某人修复OrmLite。解决方法的一种方法是截断长名称并附加固定长度的哈希,该哈希应该是过长的名称。

计划D:使用bugs.mysql.com提交错误报告,抱怨名称限制。

计划E:查看MySQL 8.0;它可能有一些增加的限制;不知道他们是否适用于此。

(与此同时,我会将这一点添加到我的长列表中,为什么第三方软件可以“阻碍”而不是帮助。)

© www.soinside.com 2019 - 2024. All rights reserved.