6

そのため、しばらくの間Entity Frameworkを使用してきました(メインプロジェクトのv5で)。私が常に持っていた 1 つの質問ですが、決定的な答えを見つけることができませんでした。EF が正しく機能するためには、接続文字列の名前が DbContext の名前と一致する必要がありますか?

そのように見えます (そして、私は別のことをしたことはありません) が、EF が機能するために Web.config で「魔法の文字列」を提供する必要はありません。私の意見では、名前として DefaultConnection を保持し、EF を別の方法で接続する方が良いでしょう。

これが私のWeb.configからの参照です(一部の名前が変更されています):

<connectionStrings>
    <add name="MyContext" connectionString="Data Source=|DataDirectory|MyDatabase.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

...そして...さらに下に...

<entityFramework>
    <contexts>
      <context type="MyProject.Path.To.MyContext, MyProject.Path.To, Version=1.0.0.0, Culture=neutral">
        <databaseInitializer type="MyProject.Path.To.MyInitializer, MyProject" />
      </context>
    </contexts>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
</entityFramework>

任意の洞察をいただければ幸いです。

4

1 に答える 1

12

私がいつも持っていた 1 つの質問ですが、決定的な答えを見つけることができませんでした。EF が正しく機能するには、接続文字列の名前が DbContext の名前と一致する必要がありますか?

いいえ。接続文字列名を DbContext の基本コンストラクターに渡すことができます。

public class MyDbContext : DbContext
{
    public MyDbContext()
      : base("MyConnectionStringName")
    {

    }
}

自分で接続を作成したい場合DbContextは、引数を取るコンストラクタもあります。DbConnection

最後に、 の独自の実装を提供して、で指定されたIDbConnectionFactoryデフォルトの代わりに使用できます。構成で変更するか、実行時に次のように設定します。LocalDbConnectionFactoryapp.config

Database.DefaultConnectionFactory = new MyCustomConnectionFactory();

于 2013-03-29T15:20:57.367 に答える