(我正在运行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?
我在INamingStrategy中添加了对自定义索引名称的支持,这将允许您提供要使用的自定义索引名称,而不是基于约定的索引名称,例如:
some examples
此更改可从v5.1.1获得,现在是this commit。
计划A:避免使用用户定义的长名称:“RecurringBookingAdministrationGroup”
计划B :(或者OrmLite可能有错误):不要在表格中的任何名称中包含表名(“BookRecurring”?)(除了'id'除外)。
计划C:让某人修复OrmLite。解决方法的一种方法是截断长名称并附加固定长度的哈希,该哈希应该是过长的名称。
计划D:使用bugs.mysql.com提交错误报告,抱怨名称限制。
计划E:查看MySQL 8.0;它可能有一些增加的限制;不知道他们是否适用于此。
(与此同时,我会将这一点添加到我的长列表中,为什么第三方软件可以“阻碍”而不是帮助。)