EF Code First与SQL Server Express 2012 ConnectionString

时间:2012-04-26 18:21:03

标签: ef-code-first sql-server-2012-express

使用以下连接字符串,一切正常。

<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />

我最近在本地计算机上安装了SQL Server 2012 Express进行测试,但我无法建立连接。这是我使用Windows身份验证的连接字符串。

<add name="ApplicationServices" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=testdb;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />

我是一个全力以赴的人,他尽力搜索论坛,但我无法将我的解决方案推迟到“有类似头衔的问题”部分。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:10)

EntityFramework代码首先使用app.config中的defaultConnectionFactory或web.config文件,该文件将自动连接到。\ SQLEXPRESS。此配置如下所示:

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
  </entityFramework>

如果您使用的是EF Code First,则可能有一个派生自DbContext的类用作上下文。按照设计,EntityFramework将查找与您的上下文类具有相同名称的连接字符串,并使用该字符串而不是defaultConnectionFactory。这就是我使用它的方式:

<connectionStrings>
    <add name="ObjectContext" 
         connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=My.Db.Name; Integrated Security=True; MultipleActiveResultSets=True"
         providerName="System.Data.SqlClient"/>
  </connectionStrings>

我建议检查EF不使用它的defaultConnectionFactory,甚至通过添加以您的上下文命名的连接字符串来强制覆盖它。 您还应该检查this blog article,其中提供了有关EF配置文件的详细信息。

答案 1 :(得分:0)

你确定这部分连接是对的吗?     “数据源=。\ SQLEXPRESS [名称] ;

我没有使用过SQL Server 2012,但尝试删除[Name]文本。

答案 2 :(得分:0)

这对我有用

add name="MovieDBContext" connectionString="Data Source=.\SQLEXPRESS;
Initial Catalog=Movies;
Integrated Security="True" providerName="System.Data.SqlClient"

我正在完成本教程并且必须解决这个问题。 MovieDBContext是在mvc应用程序模型中的代码中创建的

public class MovieDBContext : DbContext
{
    public DbSet<Movie> Movies { get; set; }
}

这会自动创建控制器类的IDE,但是直到我在web.config文件中找到连接字符串才能生效。