如何制作F#SQLProvider源文件(.fs)?

时间:2019-01-23 22:52:43

标签: sql-server f#

在脚本文件中工作的MY F#SQLProvider代码在复制到源文件时失败。具体来说,似乎没有与服务器通信,因为智能感知使我可以查看.fsx文件中的可用表,列等。在.fs文件中不起作用。我在解决方案中引用了FSharp.Data.SqlProvider,并在代码块中将其打开,但是GetDataContext()方法的属性是MIA。该项目引用了FSharp Core 4.6.0。

module DBaseTest

open FSharp.Data.Sql

let [<Literal>] connectionString = "Data Source=####;Initial Catalog=####;etc.;etc."

type sql = SqlDataProvider<
           DatabaseVendor = Common.DatabaseProviderTypes.MSSQLSERVER,
           CaseSensitivityChange = Common.CaseSensitivityChange.ORIGINAL,
           ConnectionString = connectionString,
           IndividualsAmount = 1000,
           UseOptionTypes = true>

let tables = sql.GetDataContext().Dbo  <--Dbo unrecognized in the .fs file

我还尝试使用.Net 4.5.1(FSharp Core 4.5.2)启动一个新的控制台应用程序,并且出现相同的错误。 GetDataContext方法没有任何属性(表,列等),并且该文件将无法编译。

open System
open FSharp.Data.Sql

let [<Literal>] connectionString = "Data Source=###;Initial Catalog=###;..."

type sql = SqlDataProvider<
            DatabaseVendor = Common.DatabaseProviderTypes.MSSQLSERVER,
            CaseSensitivityChange = Common.CaseSensitivityChange.ORIGINAL,
            ConnectionString = connectionString,
            IndividualsAmount = 1000,
            UseOptionTypes = true>

let table = sql.GetDataContext().Dbo  //property Dbo not found

let testQuery =
    query{
        for rows in table.Organization do
        where (rows.OrgName = "ASME")
        select rows
    } |> Seq.toArray

let firstRow = testQuery.[0].PressureLabel

[<EntryPoint>]
let main argv = 
    printfn "%A" firstRow
    Console.Read() |> ignore
    0

1 个答案:

答案 0 :(得分:0)

出于我的目的,此问题已解决,无需对代码进行任何更改。

我从“ SQLProvider”(R。McKinlay等人,1.1.58)切换为“ SQLProvider.Signed.1.0.40”(Niki Wiles)。

现在,属性在我的源文件中为GetDataContext()方法工作(显示)。