gpt4 book ai didi

servicestack - 从 SqlExpression 获取 tableDefs

转载 作者:行者123 更新时间:2023-12-04 07:32:31 27 4
gpt4 key购买 nike

我有一个方法,其参数为 SqlExpression<T> .该方法基本上采用 OrmLite 查询并对其执行一些从字符串输入生成的查询。
我真的需要能够从 SqlExpression<T> 获取查询的所有表类型所以我可以生成一个表达式。
在调试器中,我可以看到主表和连接表位于名为 tableDefs 的 protected 属性中。但我看不到任何公共(public)访问者。
我可以通过反射得到:

public static class SqlExpressionExtension
{
public static List<Type> GeTableTypes<T>(this SqlExpression<T> query)
{
return ((List<ModelDefinition>)query.GetType().GetField("tableDefs", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(query))
.Select(x => x.ModelType).ToList();
}
}

但我认为使用公共(public)访问器会更好。
是否有正确的方法从 SqlExpression<T> 获取所有表类型? ?

最佳答案

我刚刚添加了 GetAllTables() this commit 中的 API它返回在 SqlExpression<T> 中添加的主表和连接表.
这在最新的 ServiceStack 中可用v5.11.1+ 现在是 available on MyGet .

关于servicestack - 从 SqlExpression<T> 获取 tableDefs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67879464/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com