如何显示fsharp.data.sqlprovider类型提供程序生成的SQL

时间:2016-08-26 20:18:29

标签: sql-server f#

我正在学习F#并使用类型提供程序,并且我已将真棒FSharp.Data.SQLProvider连接到SQL Server实例。我能够使用F#的查询表达式语法对数据库执行查询,但我希望看到类型提供程序生成的SQL。我已尝试将Console.Out分配给我假设的DataContext,但我收到错误消息

  

错误FS0810:属性' Log'无法设置

如何记录类型提供程序生成的SQL?

#r @"packages/SQLProvider/lib/FSharp.Data.SqlProvider.dll"
#r @"System.Data.Linq.dll"

open System
open System.Data.Linq
open FSharp.Data.Sql

[<Literal>]
let connectionString = @"SuperSecretString"

type Sql = SqlDataProvider<
            ConnectionString = connectionString,
            DatabaseVendor = Common.DatabaseProviderTypes.MSSQLSERVER,
            IndividualsAmount = 1000>

let ctx = Sql.GetDataContext()

ctx.Log <- Console.Out  // error FS0810: Property 'Log' cannot be set

1 个答案:

答案 0 :(得分:4)

您可以收听事件SqlQueryEvent:

FSharp.Data.Sql.Common.QueryEvents.SqlQueryEvent |> Event.add (printfn "Executing SQL: %O")