spa*_*oom 9 continuous-integration f# type-providers
F#类型提供程序的类型定义通常需要常量表达式,例如对于SQL类型提供程序:
type dbSchema = SqlDataConnection<"Data Source=MySqlServer;Initial Catalog=MyDatabase;">
Run Code Online (Sandbox Code Playgroud)
但是,在将代码提交给SCM并进一步让构建服务器执行其操作时,您可能不希望使用相同的连接字符串,而是使用从构建过程生成的SQL Server数据库的连接字符串.
有这个问题的解决方案吗?
能够完成这项工作真的很棒,因为它可以提供数据库访问代码的编译时检查.
更新 @tomaspetricek提出的解决方案非常有效,但我必须在连接字符串中添加提供程序名称:
<add name="DbConnectionString" providerName="System.Data.SqlClient" connectionString="Data Source=MySqlServer;Initial Catalog=MyDatabase;"/>
Run Code Online (Sandbox Code Playgroud)
Tom*_*cek 14
您当然可以使用配置文件中的密钥指定连接字符串(请参阅MSDN文档):
SqlDataConnection<ConnectionStringName="...", ConfigFile="app.config">
Run Code Online (Sandbox Code Playgroud)
通常,类型提供者可能需要一些常量表达式,但我认为大多数广泛使用的提供者提供了一种避免这种情况的方法.例如,SqlDataConnection可以从配置文件中读取设置,其他标准F#类型提供程序允许指定LocalSchemaFile允许您在本地指定必要的结构(例如,*.dbml用于SQL的文件).
F#数据类型提供程序可以将URL带到远程文件,但它们也可以获取本地文件.所以我认为应该始终有一种方法来指定信息而不指定常量连接字符串(等) - 但随意询问具体的提供者.
| 归档时间: |
|
| 查看次数: |
760 次 |
| 最近记录: |