【问题标题】:Connection String Name and Entity Framework连接字符串名称和实体框架
【发布时间】:2013-03-29 14:30:37
【问题描述】:

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

任何见解将不胜感激。

【问题讨论】:

  • 这是默认约定,使用与DbContext 类名称相同的连接字符串。

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


【解决方案1】:

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

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

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

    }
}

如果您希望自己创建连接,DbContext 上还有一个构造函数,它接受 DbConnection 参数。

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

Database.DefaultConnectionFactory = new MyCustomConnectionFactory();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    相关资源
    最近更新 更多