我成功使用FSharp.Data.TypeProviders
访问我的数据库。我还使用FSharp.Configuration
从我的app.config中读取值。
在部署到多个临时环境时,在F#中对我的连接字符串进行硬编码是有问题的。所以,我想结合这两种方法,以便从app.config获取我的数据库连接字符串。不幸的是,我最初的尝试都失败了。
摘要摘录如下:
'
open System
open FSharp.Configuration
open FSharp.Data.TypeProviders
type Settings = AppSettings<"app.config">
// in app.config <add name="Target" connectionString="blahblah"/>
let ConnectionString = Settings.ConnectionStrings.Target
type Sql = SqlDataConnection<ConnectionString>
// ...
use db = Sql.GetDataContext()
// query db, etc.
我理解为什么类型提供程序失败了,但我想问一下是否有人建议允许我动态提供连接字符串?
为了澄清:我特别想使用FSharp.Data.TypeProviders,因为类型提供程序为我提供了这些功能。我不想要C#解决方案。
答案 0 :(得分:0)
在生产环境中,您可能会遇到普通SQL数据提供程序的问题,因为编译机器需要与数据库计算机的实时连接。尝试解决该问题的the Dbml type provider,但也允许您以编程方式提供连接字符串。
sqlmetal
将数据库架构信息提取到元语言文件中:从VS命令提示符运行sqlmetal /server:yourDB\SQLInstance /database:MyDB /sproc /dbml:schema.dbml
。let dbml = DbmlFile<"schema.dbml">
let db = dbml.MyDB(whateverConnectionString)