如何解决 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 Webhook + ServiceStack.Webhooks.OrmLite 订阅商店插件问题