EF Code First与SQL Server Express 2012 ConnectionString

Bud*_*ray 2 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" />
Run Code Online (Sandbox Code Playgroud)

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

<add name="ApplicationServices" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=testdb;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)

我是一个全力以赴的人,他尽力搜索论坛,但我无法将我的解决方案推迟到"有类似头衔的问题"部分.任何帮助是极大的赞赏.

Flo*_*anu 10

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

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
  </entityFramework>
Run Code Online (Sandbox Code Playgroud)

如果您使用的是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>
Run Code Online (Sandbox Code Playgroud)

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