连接字符串名称和实体框架

时间:2013-03-29 14:30:37

标签: sql-server asp.net-mvc entity-framework

所以我一直在使用Entity Framework(在我的主项目的v5上)。我一直有一个问题,但永远找不到确定的答案 - 我的连接字符串的名称是否必须与我的DbContext的名称相匹配才能使EF正常工作?

看起来如此(我从未做过任何不同的事情),但我不想在我的Web.config中提供“魔术字符串”以便EF工作。在我看来,将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>

任何见解都将受到赞赏。

1 个答案:

答案 0 :(得分:11)

  

我一直有一个问题,但永远找不到确定的问题   回答 - 我的连接字符串的名称是否必须匹配   我的DbContext的名称,以便EF正常工作?

没有。您可以将连接字符串名称传递给DbContext的基础构造函数,即

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

    }
}

DbContext上还有一个构造函数,如果您想自己创建连接,则会使用DbConnection参数。

最后,您可以提供自己的IDbConnectionFactory实施,并使用它代替LocalDbConnectionFactory中指定的默认app.config。您可以在配置中更改它,或者在运行时将其设置如下:

Database.DefaultConnectionFactory = new MyCustomConnectionFactory();