私はC#Webプロジェクトから使用しているF#ライブラリプロジェクトを持っています。私はF#プロジェクトでEntity Framework Type Providerを使用して、Web.config
から接続文字列を取得したいと思いますが、この作業に問題があります。Entity Framework Type Providerに実行時設定ファイルを使用させるにはどうすればよいですか?
type internal FooDb =
SqlEntityConnection<ConnectionStringName="FooDb", Pluralize=true>
は、設計時には、私は、一致する名前を持つ接続文字列とF#ライブラリプロジェクトでApp.config
ファイルを持つことが必要です。
実行時に、C#WebプロジェクトからF#コードを呼び出すと、「App.config」ファイルが見つからないというエラーが表示されます。実行時に、現在アクティブな設定ファイル(Webアプリケーションの場合はWeb.config
)から接続文字列をロードするのに、ConfigurationManager.ConnectionStrings
を使用することを期待していたので、これは私を驚かせます。しかし、これはそうではないようです。
私はConfigFile
パラメータを追加してみました:
type internal FooDb =
SqlEntityConnection<ConnectionStringName="FooDb", ConfigFile="Web.config", Pluralize=true>
しかし、これはちょうどそれがWeb.config
を見つけることができなかったことを、設計時に文句を作りました。
次に、F#ライブラリプロジェクトのApp.config
ファイルの名前をWeb.config
に変更しました。これは問題なく動作しているようです。しかし、私はこの解決策に不安です。これは実際にどのように動作するように意図されていますか?私は私のライブラリプロジェクトでweb.configファイルを持っている必要がありますか?コマンドライン実行可能ファイルから同じライブラリを使用したい場合はどうすればよいでしょうか?その環境では、設定ファイルはAssemblyName.exe.config
と呼ばれていますか?
別のコンテキストで異なる名前を持つことができる設定ファイルの名前をハードコードすることは、非常に脆く、デザインが悪いようです。私に何かが足りないと教えてください。