我以前安装过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
部分,但仍然创建具有连接字符串中指定名称的DB。
任何人都能解释一下吗?
(我创建DbContext
而没有指定连接字符串。我发现如果我指定连接字符串,那么VS会跟随连接字符串中包含的所有信息)
答案 0 :(得分:0)
我刚刚遇到了类似的问题,在我的情况下,我们将实体框架添加了自己的附加配置,其中包含实例名称:
entityFramework/defaultConnectionFactory
对我来说没有意义,为什么在连接字符串中指定了istance名称时添加它,但如果此部分中的isntance名称不同,那么它将使用它而不是连接中的localdb instace名称字符串。