F#类型提供商和持续集成

时间:2013-09-23 21:25:44

标签: f# continuous-integration type-providers

F#类型提供程序的类型定义通常需要一个常量表达式,例如:对于SQL类型提供程序:

type dbSchema = SqlDataConnection<"Data Source=MySqlServer;Initial Catalog=MyDatabase;">

但是,在将代码提交给SCM并进一步让构建服务器执行其操作时,您可能不希望使用相同的连接字符串,而是使用从中生成的SQL Server数据库的连接字符串。构建过程。

这个问题有解决方案吗?

能够完成这项工作真的很棒,因为它可以提供数据库访问代码的编译时检查。

更新 @tomaspetricek提出的解决方案非常有效,但我必须在连接字符串中添加提供程序名称:

<add name="DbConnectionString" providerName="System.Data.SqlClient" connectionString="Data Source=MySqlServer;Initial Catalog=MyDatabase;"/>

1 个答案:

答案 0 :(得分:13)

您当然可以使用配置文件中的密钥指定连接字符串(请参阅MSDN documentation):

SqlDataConnection<ConnectionStringName="...", ConfigFile="app.config">

通常,类型提供者可能需要一些常量表达式,但我认为大多数广泛使用的提供者都提供了一种避免这种情况的方法。例如,SqlDataConnection可以从配置文件中读取设置,其他标准F#类型提供程序允许指定LocalSchemaFile,允许您在本地指定必要的结构(例如,SQL的*.dbml文件)。

F#数据类型提供程序可以将URL带到远程文件,但它们也可以获取本地文件。所以我认为应该始终有一种方法来指定信息而不指定常量连接字符串(等) - 但随意询问具体的提供者。