前言
Day 17先了解ORM技術後再來要準備連接到資料庫。
關於SSMS使用的部分可以在網路上找到不少教學使用,都可以先了解後再繼續跟著看下去喔~
先在資料庫建立了一個新的資料庫
CREATE DATABASE IronThirty;
在資料庫安全性的地方,登入 ⇒ 新增登入 ⇒ 輸入登入名稱跟密碼(要記得自己設定甚麼喔~)
好了之後看到上圖左側的使用者對應,點進去,點選剛剛新增的資料庫名稱以後,選擇db_owner(擁有最大權限的)
資料庫上下文是一個用於協調資料庫操作的主要類。它負責跟蹤數據模型的更改、執行資料庫操作,以及維護資料庫連接。
首先想要連到資料庫需要有連線字串使用,要知道連接到哪一個資料庫,登入的名稱密碼是甚麼,所以先到appsetting.json這裡面加上連線字串。
ConnectionStrings裡面是我們要命名的名稱,後面是資料來源,"."一個點表示是本地的意思,Initial Catalog 後面放資料庫名稱,User ID跟Password就不用說,是上面建立好的登入名稱跟密碼。
"ConnectionStrings": {
"ironDay": "Data Source=.;Initial Catalog=IronThirty;Persist Security Info=True;User ID=iron30;Password=iron30;MultipleActiveResultSets=true;TrustServerCertificate=true"
},
上面建立好正確的連線字串以後,創建一個簡單的資料庫上下文類:
using Microsoft.EntityFrameworkCore;
public class BlogDbContext : DbContext
{
public BlogDbContext(DbContextOptions<BlogDbContext> options) : base(options)
{
}
public DbSet<Article> Articles { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
optionsBuilder.UseSqlServer(config.GetConnectionString("ironDay"));
}
}
}
上面創建了一個名為“BlogDbContext”的數據庫上下文類。我們使用**DbSet
屬性定義了一個Article
類型的屬性,這將允許我們對“文章”數據表進行操作。在OnConfiguring
**方法中,我們指定了用於連接數據庫的連接字符串。使用“ironDay”替換為你的實際連接字符串。
這裡類別建立好了以後,要到Program.cs裡面加上這段,在DI容器裡面注入BlogContext的類別
builder.Services.AddDbContext<BlogDbContext>(Options => {
Options.UseSqlServer(builder.Configuration.GetConnectionString("ironDay"));
});
一旦我們定義了資料模型和資料庫上下文,我們需要創建資料庫或更新現有的資料庫以匹配我們的模型。這個過程稱為資料庫遷移。我們可以使用Entity Framework Core的遷移工具來執行這些操作。
首先,打開套件管理器控制台。在Visual Studio中,你可以在“工具”>“NuGet套件管理器”>“套件管理器控制台”中找到它。然後運行以下命令:
Add-Migration InitialCreate
這個命令將為我們的模型創建一個遷移。然後運行以下命令來應用遷移並創建數據庫:
Update-Database
如果沒有安裝Entity Framework Core Tool的話就可能會出現下圖錯誤(當然還是有可能會遇到其他的錯誤訊息,但這條路上就是不斷的debug解決問題的呀~~)。
第18天挑戰完成~