2013-09-23 10 views
7

F#タイププロバイダのタイプ定義には、しばしば定数式が必要です。 SQLタイププロバイダの:F#タイププロバイダと連続的インテグレーション

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

SCMにコードをコミットし、さらにそのことをやってビルドサーバーを持つときしかし、あなたはおそらく同じ接続文字列ではなく、接続文字列を使用したくありませんビルドプロセスから生成されたSQLサーバーデータベースの名前。

この問題の解決策はありますか?

データベースアクセスコードのコンパイル時チェックを提供するので、この作業を行うことができれば本当にうれしいでしょう。

更新 @tomaspetricekによって提案された解決策は非常によく働いたが、私は、接続文字列にプロバイダ名を追加する必要がありました:

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

その文字列が設定ファイルから供給された方が良いでしょう。 –

+0

@RobertHarvey確かに、これは簡単にできることです;-) –

答えて

12

あなたは確かにキーを使用して接続文字列を指定することができます設定ファイル(MSDN documentationを参照してください):一般的に

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

、タイププロバイダは、いくつかの定数式が必要な場合がありますが、私は広く使われているもののほとんどはのための方法を提供考えますこれを避ける。たとえば、SqlDataConnectionは設定ファイルから設定を読み取ることができ、その他の標準F#タイププロバイダはLocalSchemaFileを指定することで、必要な構造をローカルで指定することができます(例:*.dbml file for SQL)。

F#データ型プロバイダは、URLをリモートファイルに変換できますが、ローカルファイルも取得できます。だから私は常に一定の接続文字列(など)を指定せずに情報を指定する方法があるべきだと思いますが、特定のプロバイダについてはお気軽にお問い合わせください。

+0

私は例を使って質問を更新しました。 – spacedoom

関連する問題