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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ServiceStack.OrmLite:索引的自定义命名可以在代码中完成吗?相关的知识,希望对你有一定的参考价值。

(我正在运行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;它可能有一些增加的限制;不知道他们是否适用于此。

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

以上是关于ServiceStack.OrmLite:索引的自定义命名可以在代码中完成吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用 ServiceStack.ORMLite 的存储库模式中的事务

如何修改 ServiceStack.OrmLite 生成的 SQL?

ServiceStack OrmLite 连接Sqlserver数据库

在运行时在 ServiceStack.OrmLite 中获取类的表名/避免硬编码表名

在 SQL Server 和 ServiceStack.OrmLite 中使用架构名称

ServiceStack.OrmLite 入门