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 中获取类的表名/避免硬编码表名