コードファーストアプローチでEF 4.3を使用しています。
EF 4.3 では、新しい<entityFramework />
構成セクションを使用して、コンテキストの接続文字列を初期化することをお勧めします。
オンラインで検索しましたが、この方法を使用して構成可能なデータベース名で接続を初期化する便利な方法が見つからないようです。
たとえばMyDBContext
、アプリケーションにエンティティがあるとします。からの接続文字列で指定されたデータベース名を使用したいInitial Catalog=MyDB;
EF 4.1 の古い方法を使用すると、<connectionstring>
構成ファイルのセクションに接続文字列を追加することで問題なく実行できます。
<add name="MyDBContext" connectionString="Data Source=.\SQLEXPRESS; Initial Catalog=MyDB; Integrated Security=True; MultipleActiveResultSets=True" providerName="System.Data.SqlClient"/>
EF 4.3 がサポートする新しい configsection を使用したい場合、接続文字列でデータベース名を指定する方法がありません。以下を試しましたが、Initial Catalog
プロパティは無視されます。DefaultConnectionFactory
全体がアプリケーション内の複数のコンテキストで使用される可能性があるため、正当な理由で無視されていると思います
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="Data Source=.\SQLEXPRESS; Initial Catalog=MyDB; Integrated Security=True; MultipleActiveResultSets=True" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
これを使用した結果、codefirst アプローチが作成するデフォルトの DB 名は次のとおりです。MyNamespace.MyDBContext
基本オブジェクトのnameOrConnectionString
引数に値を渡すことによって、このデフォルトの命名を上書きする 1 つの方法があることを理解しています。DBContext
だから私はこのようなことができます:
public MyDBContext() : base("MyDB") { }
ただし、このアプローチを採用すると、アプリケーションに DB 名をハードコーディングすることになり、個人的にはこれが好きではありません。
DB コンテキストのデータベース名をファイルから便利に渡す方法はあるのだろうか、それともこのセクションWeb.config
を使い続ける必要があるのでしょうか?<connectionstrings>