我正在寻找一种适用于C#的灵活查询生成器,该查询生成器将在没有完整ORM的所有开销的情况下运行。我正在考虑使用SQL Kata,但是我有一个不确定的用例:
在我们的应用程序中,我们构建“基础”查询,该查询从表中进行原始选择,然后将其用作子查询,在此子查询上执行分组和其他分析。构建这些基本查询时,我们尚不知道最终输出中实际需要哪些确切字段,因此我们将所有字段都包括在选择列表中。
我正在寻找一种查看最终查询的方法,然后使用实际的选择列表来限制基本查询正在检索的字段。这将为我们的柱状商店提供性能优势。
是否可以在SQL Kata中遍历和修改查询?
像这样-向我显示外部查询中的所有字段,向我显示内部“基本”查询中的所有字段,然后让我修改内部选择列表。
答案 0 :(得分:1)
简短的回答是,您可以检查查询实例并遍历选定的列,如下所示:
closeBottomSheetHandler
但是我建议的是构建基本查询而不选择任何列, 然后在以后的阶段中仅选择所需的列。
请注意,如果在编译阶段未选择任何列,则SqlKata会将其转换为 openBottomSheetHandler() {
return this.BottomSheet.interpolate({
inputRange: [1, 2],
outputRange: [SCREEN_HEIGHT / 1.48, SCREEN_HEIGHT / 2.1],
});
}
closeBottomSheetHandler() {
return this.BottomSheet.interpolate({
inputRange: [1, 2],
outputRange: [SCREEN_HEIGHT / 1.48, SCREEN_HEIGHT / 2.1],
});
}
,这对您来说很方便。
var columns = query.GetComponents<AbstractColumn>("select");
foreach(var column in columns)
{
if(column is Column col)
{
Console.WriteLine(col.Name);
} elseif(column is RawColumn raw) {
Console.WriteLine(col.Expression);
} elseif(column is QueryColumn subQuery) {
// do something with subQuery.Query
}
}