【问题标题】:VS/EF ignores MSSQLLocalDB setting in App.configVS/EF 忽略 App.config 中的 MSSQLLocalDB 设置
【发布时间】:2016-03-24 19:05:09
【问题描述】:

我之前安装了 SQL Server 2008 R2 和 VS 2015。我正在使用 EF (6.1.3) 创建一些控制台应用程序,并添加了如下连接字符串:

<connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=EFTest2.mdf;Initial Catalog=EFTest2;Integrated Security=True"
         providerName="System.Data.SqlClient" />
</connectionStrings>

已在 (LocalDb)\MSSQLLocalDB 实例 (v12.0.2000) 下正确创建数据库

(虽然我注意到两个特点:

  1. 如果我在连接字符串中重命名了数据库,EF 并没有使用新名称创建新的数据库,并且

  2. EF 自动将上下文名称附加到 DB 文件中,例如EFTest2.MyContext.mdf。这些可能与当前的问题有关....)

然后我安装了 SQL Server 2014 和工具 (SSMS)。重新启动 PC 后,现在如果我使用与上面相同的连接字符串,数据库将在 USER-PC\SQLEXPRESS (v10.0.2531) 下创建。所以 VS 忽略了(LocalDb)\MSSQLLocalDB 部分,但仍然使用连接字符串中指定的名称创建数据库。

谁能解释一下?

(我在没有指定连接字符串的情况下创建了DbContext。我发现如果我指定了连接字符串,那么VS会遵循连接字符串中包含的所有信息)

【问题讨论】:

  • 首先,您确定您安装了一个实例名为 MSSQLLocalDB 的 LocalDb 实例吗?您可以在 SQL Server 对象资源管理器中查看实例
  • 是的,确实如此。另外,如果我在 PM 控制台中输入 sqllocaldb i,我会得到 MSSQLLocalDB, ProjectsV12, v11.0。我什至没有得到 v10.0 的结果。

标签: entity-framework visual-studio-2015 connection-string


【解决方案1】:

我刚刚遇到了类似的问题,在我的情况下,它使我们的实体框架在具有实例名称的地方添加了自己的附加配置:

entityFramework/defaultConnectionFactory

这对我来说没有意义,为什么在连接字符串中指定了 istance 名称时要添加此名称,但如果本节中的 istance 名称不同,那么它将使用该名称,而不是连接中的 localdb 实例名称字符串。

【讨论】:

    猜你喜欢
    • 2011-05-09
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多