我纯粹使用 SqlKata 在 C# 中构建 sql 查询。我想获取我构建的输出Query
,获取原始(编译的)sql 字符串,然后针对 SQL 执行它。
我认为这会做到这一点:
var factory = new QueryFactory(null, new SqlServerCompiler());
var query = new Query();
...
var sqlText = factory.Compiler.Compile(query).Sql;
但这给出了这个:
SELECT TOP (@p0) [AllStarFull].[GameNumber], [AllStarFull].[LeagueId], [AllStarFull].[PlayedInGame] FROM [AllStarFull]
这会引发异常,因为(@p0)
它是一个参数,而不是实际值。
在文档中,它提到了引入,Logger
但我真的不需要日志记录功能(现在)。
https://sqlkata.com/docs/execution/logging
var db = new QueryFactory(connection, new SqlServerCompiler());
// Log the compiled query to the console
db.Logger = compiled => {
Console.WriteLine(compiled.ToString());
};
var users = db.Query("Users").Get();
无论如何从Query
填充所有参数的情况下获取原始 sql 字符串?