微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过F#和Npgsql在Postgresql中调用存储过程

我试图使用Npgsql类型提供程序从F#调用 postgresql中的存储过程.

目前,我连接到数据库如下:

open System
open System.Data
open System.Data.Entity
open System.Data.Linq
open Microsoft.fsharp.data.typeproviders
open Microsoft.FSharp.Linq
open Npgsql
open NpgsqlTypes

type internal dbSchema = sqlEntityConnection<ConnectionString="**my connection string**",Provider="Npgsql">

let internal db = dbSchema.GetDataContext()

但是,我只看到db类型上的表,而不是任何存储过程.有没有办法通过类型提供程序以静态类型的方式使用存储过程,而不是只调用原始查询字符串?

解决方法

我知道这个问题是在不久前提出的,但我想我会添加一个SqlProvider的引用.这最近支持Postgresql添加到它,它包括对SPROCS的支持.

[<Literal>]
 let connStr = "User ID=postgres;Password=password;Host=POSTGREsql;Port=9090;Database=hr;"

 [<Literal>]
 let resolutionFolder = @"D:\Downloads\Npgsql-2.1.3-net40\"

 type HR = sqlDataProvider<ConnectionString=connStr,Databasevendor=Common.DatabaseProviderTypes.POSTGREsql,ResolutionPath = resolutionFolder>
 let ctx = HR.GetDataContext()

 ctx.Procedures.ADD_JOB_HISTORY(100,DateTime(1993,1,13),DateTime(1998,7,24),"IT_PROG",60)


 //Support for sprocs that return ref cursors
 let employees =
     [
       for e in ctx.Functions.GET_EMPLOYEES().ReturnValue do
           yield e
     ]

解析文件夹指向NPGsql .NET程序集的位置.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐