7

コードファーストアプローチで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>

4

1 に答える 1

0

データベース名はどのくらいの頻度で変更する必要があると思いますか?

とは言っても、私自身はこの問題に遭遇したことはありません (データベース名をハードコーディングしても問題ありません - 変更しないでください) 1 つのオプションとして、必要なデータベース名を Web.config にアプリケーション設定として保存することができます。 、そしてコードにそこから値を取得させます。

編集: http://blogs.msdn.com/b/adonet/archive/2011/01/27/using-dbcontext-in-ef-feature-ctp5-part-2-connectionsもご覧ください。 -and-models.aspx :

public UnicornsContext()
    : base("name=UnicornsCEDatabase")
{
}

その特定の名前の接続文字列をプルすると、次のようになります。

<configuration>
<connectionStrings>
    <add name="UnicornsCEDatabase"
        providerName="System.Data.SqlServerCe.4.0"
        connectionString="Data Source=Unicorns.sdf"/>
</connectionStrings>
</configuration>

http://blogs.msdn.com/b/adonet/archive/2012/01/12/ef-4-3-configuration-file-settings.aspxによると、これは 4.3 でも動作するはずです。

于 2012-09-04T12:17:12.943 に答える