Entity Framework 未在 App_Data 中创建数据库
Entity Framework Does Not Create Database in App_Data
我在网络上工作 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>
我曾经在项目菜单中显示所有文件和 bla bla bla
但正在
创建数据库
C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA
我该如何解决这个问题?
是的,这是默认设置。两种修复方法:
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>
通常您需要将应用程序配置中的设置更改为 '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\
虽然我会认真地建议,如果这不是一个小型的紧凑型应用程序,并且增长幅度很小,那么您就不要做附加数据库。这对于大规模应用程序的部署来说只是一个坏主意,并且通常是一种不好的做法,除非您知道您的数据库通常总是很小的。不过只是我的两分钱。
通过安装 Sql LocalDB
解决了问题
我在网络上工作 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>
我曾经在项目菜单中显示所有文件和 bla bla bla
但正在
创建数据库C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA
我该如何解决这个问题?
是的,这是默认设置。两种修复方法:
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>
通常您需要将应用程序配置中的设置更改为 '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\
虽然我会认真地建议,如果这不是一个小型的紧凑型应用程序,并且增长幅度很小,那么您就不要做附加数据库。这对于大规模应用程序的部署来说只是一个坏主意,并且通常是一种不好的做法,除非您知道您的数据库通常总是很小的。不过只是我的两分钱。
通过安装 Sql LocalDB
解决了问题