如何解决 ServiceStack OrmLite 的七个连接表的限制

Posted

技术标签:

【中文标题】如何解决 ServiceStack OrmLite 的七个连接表的限制【英文标题】:How to work around ServiceStack OrmLite's limit of seven joined tables 【发布时间】:2021-12-22 04:19:33 【问题描述】:

使用 ServiceStack OrmLite (5.1.0),我们需要运行一个查询,该查询会引入 8 个连接表(这是一个产品表 - 我们需要提取产品以及有关其类别、品牌、供应商和等等)。

OrmLite 提供了例如SqlExpression.Select<T1, T2, T3, T4, T5, T6, T7>(),但这是一张太少的表。同样的限制似乎扩展到所有查询方法 - 例如,IDbConnection.SelectMultiAsync<T1, T2, T3, T4, T5, T6, T7>()

我们可能会运行两个查询并在代码中连接数据,但是否有一种使用 OrmLite 的解决方法可以将其保留在一个连接查询中?

(我知道我们应该升级,很高兴知道这个限制是否在以后的版本中被取消,但现在我正在寻找一种在 5.1 下解决这个问题的方法)

【问题讨论】:

【参考方案1】:

OrmLite 的最新 v5.12 现在在其SqlExpression.Select<> API 中支持 12 个表。

SelectMultiAsync 返回一个generc .NET Tuple<>,它最多有8 个通用参数,我刚刚在this commit 中添加了对它的支持,它应该会在接下来的2 天内在NuGet 上可用。

【讨论】:

天啊!又一个明星支持! :)

以上是关于如何解决 ServiceStack OrmLite 的七个连接表的限制的主要内容,如果未能解决你的问题,请参考以下文章

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

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

如何在 ServiceStack OrmLite 中检索自动递增的 ID?

ServiceStack.OrmLite 调用存储过程

ServiceStack Webhook + ServiceStack.Webhooks.OrmLite 订阅商店插件问题

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