在ASP.NET 4.x中(包括ASP.NET MVC 5),可以通过附加数据库文件文件的方式,将数据库保存在项目的文件中。这种方式对于不同时段需要更换计算机(白天办公室,晚上家里)开发时带来好处。
而.NET Core版本(包括 ASP.NET Core MVC )数据库是默认保存在c:/users/{currentusername}中。
1、ASP.NET 4.x本来就存在着App_Data的系统文件夹,用来存放数据库文件。
数据库连接字符串中的|DataDirectory| 表示了App_Data文件。典型的连接字符串为:
<add name="TeachingMaterialDbContext" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\TeachingMaterial.mdf;Initial Catalog=TeachingMaterial;Integrated Security=True" providerName="System.Data.SqlClient" />
ASP.NET 4.X中的webconfig.config文件中, 数据库连接连接字符串中的 \ 符号已自动转义,不需要额外的双斜杠\\
2、ASP.NET Core程序,我们一般将数据库连接字符串保存在 appsettings.json文件中。典型的连接字符串为:
"ConnectionStrings": {
"MVCMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MVCMovieContext-ServerSyntax;Trusted_Connection=True;MultipleActiveResultSets=true",
}
ASP.NET Core MVC中的appsetting.json文件中, 数据库连接连接字符串中的 \ 符号没有自动转义,出现\需要双斜杠\\来转义。
可以将appsetting.json文件中连接字符串改为 Data Source, Initial Catalog双单词表示的形式,如
"ConnectionStrings": {
"MVCMovieContext": "Data Source=(LocalDb)\\MSSQLLocalDB;Initial Catalog=MVCMovieContext-DataSourceSyntax1;Trusted_Connection=True;MultipleActiveResultSets=true"
}
但以上2种方法都只能将数据库保存本地计算机上的c:\user\{currentusername}目录下,如果需要换台计算机继续来开发ASP.NET Core,需要拷贝2次,且程序与数据库不在同一个目录下,拷贝显得麻烦。能不能实现像ASP.NET MVC开发一样,将数据库就保存在应用程序所在的项目中呢?
肯定数据库连接字符串需要使用到附加 AttachDbFileName,但由于ASP.NET Core不将 |DataDirectory|作为默认系统文件。因此,不能直接使用 如AttachDbFilename=|DataDirectory|\TeachingMaterial.mdf;,况且默认的项目模板没有App_Data文件夹。
原文地址:https://www.cnblogs.com/liuyuanhao/p/10439175.html