C# 如何通过System.Data.SQLite检索F#查询表达式的SQL查询字符串?

C# 如何通过System.Data.SQLite检索F#查询表达式的SQL查询字符串?,c#,sqlite,f#,query-expressions,C#,Sqlite,F#,Query Expressions,我正在使用,并试图检索下面的查询表达式生成的SQL字符串。查询执行正确,但SQL字符串为selectnull为[EMPTY] 似乎不支持GetCommand().CommandText,但是如果支持,那么如何访问生成的SQL字符串呢 [] 成员:this.showSQL()= 让connectionString=sprintf@“数据源=%s;UTF8Encoding=True;版本=3”dbFilename let connection=new SQLiteConnection(connect

我正在使用,并试图检索下面的查询表达式生成的SQL字符串。查询执行正确,但SQL字符串为
selectnull为[EMPTY]

似乎不支持
GetCommand().CommandText
,但是如果支持,那么如何访问生成的SQL字符串呢

[]
成员:this.showSQL()=
让connectionString=sprintf@“数据源=%s;UTF8Encoding=True;版本=3”dbFilename
let connection=new SQLiteConnection(connectionString)
使用dc=新数据上下文(连接)
让channelMap=dc.GetTable()
让map=query{
对于channelMap中的行,请执行以下操作:
其中(row.ChannelId=1)
选择(row.ChannelId、row.Data0、row.State)}
让cmd=dc.GetCommand(map.CommandText);
printf“SQL:%s”cmd

SQLiteCommand对象的关联CommandText属性按预期工作

    static void Main(string[] args)
    {
        string sql = "select * from foo";
        SQLiteCommand command = new SQLiteCommand(sql, null);

        Console.WriteLine(command.CommandText);
        Console.ReadLine();
    }

也许您可以重新编写代码来利用它。

我注意到官方示例在阅读
CommandText
之前执行查询。好主意,尝试过,结果相同。上面的代码打印了以前放入
SQLiteCommand
的内容。但我需要的是一种将F#查询表达式转换为SQL字符串以进行调试的方法。回到F#代码,
dc.GetCommand(map)
行实际上返回了一个
SQLiteCommand
实例,但没有我所期望的SQL。我怀疑
SQLiteCommand
使用SQLite的C API,而不是进行SQL转换。也许有人能证实。哦,我明白你的意思了。我认为这是可能的,在这种情况下,他们可能已经重写了ToString命令。dc.GetCommand(map).CommandText.ToString()产生什么?它产生相同的结果,因为
CommandText
已经是一个字符串。