【发布时间】: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) 下正确创建数据库
(虽然我注意到两个特点:
如果我在连接字符串中重命名了数据库,EF 并没有使用新名称创建新的数据库,并且
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