我正在开发一个web api,我需要在App_Data文件夹中有一个本地数据库,我使用的是Entity Framework Code First,但是它没有在App_Data中创建数据库
这是我的连接字符串:
<connectionStrings>
<add name="TestDBContext"
connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=TestDB;Integrated Security=True;MultipleActiveResultSets=True;AttachDBFilename=|DataDirectory|TestDB.mdf;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
我在项目菜单中使用show all file和bla bla bla
但正在
中创建数据库C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA
我该如何解决这个问题?
答案 0 :(得分:1)
是的,这是默认值。两种解决方法:
1)将连接字符串添加到上下文的构造函数:
public ApplicationDbContext()
: base("TestDBContext") { }
2)在配置中添加默认连接工厂:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=TestDB;Integrated Security=True;MultipleActiveResultSets=True;AttachDBFilename=|DataDirectory|TestDB.mdf;User Instance=True" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
答案 1 :(得分:0)
通常,您需要将app config中的设置更改为“AttachDbFileName”,否则默认为SQL Server Express实例。通常你可以将模式设置为附加并修复它:
<add name="ConnectionStringName"
providerName="System.Data.SqlClient"
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFileName=|DataDirectory|\DatabaseFileName.mdf;InitialCatalog=DatabaseName;Integrated Security=True;MultipleActiveResultSets=True" />
这是一个关于你的连接的MS页面: https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx#sqlce \
虽然我会严重建议,如果这不是一个小型增长的小应用程序,你不会做一个附加的数据库。对于大型应用程序的部署和一般的不良做法来说,这只是一个坏主意,除非您知道您的数据库通常很小。只是我的两美分。
答案 2 :(得分:0)
安装Sql LocalDB
解决了问题