前言 接上一篇Linux系統下創建dotnet項目,這一篇我們聊聊.NET6環境下dotnet項目連接資料庫的方式方法,包括資料庫字元串該如何配置。看了很多博主寫的文章,連接資料庫字元串配置的方式和位置五花八門,這篇文章給大家介紹一下連接資料庫字元串的配置方式方法,順便介紹下一個新創建的dotnet ...
前言
接上一篇Linux系統下創建dotnet項目,這一篇我們聊聊.NET6環境下dotnet項目連接資料庫的方式方法,包括資料庫字元串該如何配置。看了很多博主寫的文章,連接資料庫字元串配置的方式和位置五花八門,這篇文章給大家介紹一下連接資料庫字元串的配置方式方法,順便介紹下一個新創建的dotnet項目的各個模塊的作用。
各模塊作用
① Properties -- launchSettings.json
launchSettings.json文件是 ASP.NET Core 應用特有的配置標準,用於應用的啟動準備工作,包括環境變數,開髮端口等。在launchSettings.json文件中進行配置和右鍵項目--【屬性】--【調試】中所提交的更改的效果是一樣的,並且支持同步更新。
②依賴項
依賴項組織了項目開發與運行時所需的DLL,分佈在不同的類別下:包、分析器、框架、項目。
③ Controllers
Controllers 目錄用於存放MVC編程框架下的控制器類文件。
④ appsettings.json
appsettings.json 是 ASP.NET Core 預設提供的系統配置文件。與 ASP.NET WeForm、ASP.NET MVC 中的 web.config 文件功能類似。
ASP.NET Core 支持利用環境變數來動態配置 JSON 文件。ASP.NET Core 引用了一個特定的環境變數 ASPNETCORE_ENVIRONMENT 來描述應用程式當前運行的環境。這個變數可以被設置為任何你喜歡的值,但是有三個值被約定使用: Development,Staging 和 Production。
⑤Program.cs
Program.cs 是 Asp.Net Core 的入口文件。它負責創建、配置和運行泛型主機(Host),ASP.NET Core應用程式需要在泛型主機中執行。
補充說明:有的同學創建的項目裡面沒有Program.cs,但是有Startup文件,也是一樣的,只是寫法略有不同。
添加依賴
添加依賴的命令是dotnet add package xxxx.xxx
//添加SqlServer依賴
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
//添加MySQL依賴
dotnet add package MySql.EntityFrameworkCor
//添加Sqlite依賴
dotnet add package Microsoft.Data.Sqlite.Core
連接資料庫字元串到底該寫在哪裡
通過對各個模塊作用的介紹,我們知道連接資料庫的字元串肯定是寫在appsettings.json文件裡面,有的人把連接資料庫字元串寫在上下文類文件中,或者寫在Program.cs文件中,也不是不可以,不過不是規範的寫法。舉個例子,當你的項目發佈部署以後,要求更改新的資料庫服務地址,怎麼辦?我們都知道.NET項目編譯以後,所有.cs文件都會被編譯為DLL文件,想修改裡面的內容就需要重新編譯,也就是說之前發佈好的項目是不能用了,但是.json文件沒有編譯。如果你的連接資料庫字元串寫在Program.cs文件中,那麼只能重新編譯發佈。如果連接資料庫字元串寫在了appsettings.json中,則只需要修改appsettings.json文件即可。現在知道連接資料庫字元串到底該寫在哪裡了吧。
以上都是不規範的寫法。
幾種資料庫的配置方法
下麵逐一介紹MySQL、SQL server、sqlite數據的連接方式
MySQL
appsettings.json中添加下麵內容,其中MySqlDataBase可以自己定義,見名識意就好哦。後面的內容根據自己的實際情況修改就好。
"ConnectionStrings": {
"MySqlDataBase": "Server=127.0.0.1;Port=3306;User Id=xxx;Password=xxx;Database=xxx"
}
Program.cs文件中添加如下內容。其中"MySqlDataBase"為appsettings.json中定義的名字。MynetContext為你數據上下文類名。
builder.Services.AddDbContext<MynetContext>(
options =>
{
options.UseMySql(builder.Configuration.GetConnectionString("MySqlDataBase"), new MySqlServerVersion(new Version(8, 0, 31)));
});
SQL server
appsettings.json中添加下麵內容,其中"MVCSqlContext"可以自己定義,見名識意就好哦。後面的內容根據自己的實際情況修改就好。
"ConnectionStrings": {
"MVCSqlContext": "Server=localhost;Database=InfoUser;User ID=sa;Password=sa;"
}
Program.cs文件中添加如下內容。其中"MVCSqlContext"為appsettings.json中定義的名字。MynetContext為你數據上下文類名。
builder.Services.AddDbContext<MynetContext>(
options =>
{
options.UseSqlServer(builder.Configuration.GetConnectionString("MVCSqlContext"));
});
SQLite
appsettings.json中添加下麵內容,其中"DefaultConnection"可以自己定義,見名識意就好哦。後面的內容根據自己的實際情況修改就好。
"ConnectionStrings": {
"DefaultConnection": "DataSource=app.db;Cache=Shared"
}
Program.cs文件中添加如下內容。其中"DefaultConnection"為appsettings.json中定義的名字。MynetContext為你數據上下文類名。
builder.Services.AddDbContext<MynetContext>(
options =>
{
options.UseSqlite(builder.Configuration.GetConnectionString("DefaultConnection"));
});
補充:為防止有人不知道在Startup文件怎麼寫,這裡給一個示例:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddDbContext<PrizeContext>(options => options.UseSqlite(Configuration.GetConnectionString("DefaultConnection")));
}
註:下一篇將創建實體類,通過EFCore方式自動生成資料庫。