0

我正在开发一个 web api,我需要在 App_Data 文件夹中有一个本地数据库,我首先使用实体​​框架代码,但它不会在 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>

我用在项目菜单中显示所有文件和bla bla bla

但正在创建数据库

C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA

我该如何解决?

4

3 回答 3

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

于 2017-01-24T18:54:35.983 回答
0

通常,您需要将应用程序配置中的设置更改为“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 \

尽管我会认真建议如果这不是一个小型紧凑型应用程序,增长很小,但您不要附加数据库。这对于大规模应用程序的部署来说只是一个坏主意,并且通常是一种不好的做法,除非您知道您的数据库通常总是很小的。只是我的两分钱。

于 2017-01-24T19:18:06.593 回答
0

通过安装 Sql LocalDB 解决的问题

于 2017-01-24T20:29:41.440 回答