6

所以我一直在使用 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>

任何见解将不胜感激。

4

1 回答 1

12

我一直有一个问题,但永远找不到明确的答案 - 我的连接字符串的名称是否必须与我的 DbContext 的名称匹配才能使 EF 正常工作?

不,您可以将连接字符串名称传递给 DbContext 的基本构造函数,即

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

    }
}

如果您更愿意自己创建连接,那么还有一个构造函数DbContext需要一个参数。DbConnection

最后,您可以提供自己的实现IDbConnectionFactory并使用它,而不是LocalDbConnectionFactoryapp.config. 您可以在配置中更改它,或者在运行时设置它,如下所示:

Database.DefaultConnectionFactory = new MyCustomConnectionFactory();

于 2013-03-29T15:20:57.367 回答