实体框架不会在App_Data中创建数据库

时间:2017-01-24 18:38:15

标签: asp.net database entity-framework localdb app-data

我正在开发一个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

我该如何解决这个问题?

3 个答案:

答案 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>

请参阅https://msdn.microsoft.com/en-us/data/jj556606

答案 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

解决了问题