Как получить строку запроса SQL из выражения запроса F# через System.Data.SQLite?

Я использую System.Data.SQLite и пытаюсь получить строку SQL, сгенерированную выражением запроса ниже. Запрос выполняется правильно, но строка SQL SELECT NULL AS [EMPTY],

Кажется, что GetCommand().CommandText не поддерживается, но если это так, как еще можно получить доступ к сгенерированной строке SQL?

[<Test>]
member this.showSQL() =
    let connectionString = sprintf @"Data Source=%s;UTF8Encoding=True;Version=3" dbFilename
    let connection = new SQLiteConnection(connectionString)
    use dc = new DataContext(connection)

    let channelMap = dc.GetTable<ChannelData>()

    let map = query {
        for row in channelMap do
        where (row.ChannelId = 1)
        select (row.ChannelId, row.Data0, row.State) }

    let cmd = dc.GetCommand(map).CommandText;
    printf "SQL: %s" cmd

1 ответ

Объект SQLiteCommand имеет связанное свойство CommandText, работающее так, как задумано.

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

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

Возможно, вы можете переделать свой код, чтобы использовать его.

Другие вопросы по тегам