Views: 27
這塊其實很少做,通常專案設定一次後就很少設定第二次
速成懶人包
- 用Nuget安裝這四個套件:
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore.SqlServer
(看你用哪個類型的DB)
- 新增Model相關類別
- 新增一個繼承
DbContext
物件的Context
物件,例如ApplicationDbContext.cs
appsettings.json
加入連線字串 (DB那邊也要開好對應的權限)Program.cs
加入注入連線字串的設定
開新專案
搜尋Controll → 選ASP.NET Core Web 應用程式(Model-View-Controller)
專案名稱自己隨意
專案設定我是設定.Net8 LTS的專案,我習慣使用「不要使用最上層陳述式」。
專案開好囉
Nuget安裝套件
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore.SqlServer
(看你用哪個類型的DB)
開始安裝,中間會出現各種確認的畫面,直接按下確定就好。
新增Model
這邊我用一個Model當例子Book.cs
,路徑我放在/Models/Book.cs
using System.ComponentModel.DataAnnotations;
using Microsoft.EntityFrameworkCore;
namespace CodeFirstDemo.Models
{
/// <summary>
/// 書本
/// </summary>
public class Book
{
/// <summary>
/// 流水號
/// </summary>
[Key]
[Comment("流水號")]
public int Id { get; set; }
/// <summary>
/// 書名
/// </summary>
[Comment("書名")]
public string Name { get; set; }
}
}
新增ApplicationDbContext.cs
這邊你可以自己取名,不一定要叫做ApplicationDbContext
路徑我習慣放 /Models/ApplicationDbContext.cs
using Microsoft.EntityFrameworkCore;
namespace CodeFirstDemo.Models
{
public class ApplicationDbContext: DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
/// <summary>
/// 書籍資料
/// </summary>
public DbSet<Book> Books { get; set; }
}
}
appsettings.json新增連線字串
.net core之後的連線字串都是寫在appsetting.json
使用Windows帳號做認證
"ConnectionStrings": {
"DefaultConnection": "Data Source=資料庫IP;Initial Catalog=資料庫名稱; Integrated Security=true;TrustServerCertificate=True;"
},
使用資料庫帳密認證
"ConnectionStrings": {
"DefaultConnection": "Data Source=資料庫IP;Initial Catalog=資料庫名稱; User id=資料庫帳號;Password=密碼; TrustServerCertificate=True;"
},
完整的appsettiongs.json (使用作業系統認證)
{
"ConnectionStrings": {
"DefaultConnection": "Data Source=.;Initial Catalog=CodeFirstDemo; Integrated Security=true;TrustServerCertificate=True;"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
Program.cs加入依賴注入連線字串
.net Core之後有內建依賴注入,要寫在Program.cs
中
加入連線字串依賴注入,這邊指定將DefaultConnection
注入到ApplicationDbContext
這個物件
builder.Services.AddDbContext<ApplicationDbContext>(
db => db.UseSqlServer(
builder.Configuration.GetConnectionString("DefaultConnection")
), ServiceLifetime.Singleton);
完整的Program.cs 點我展開
using CodeFirstDemo.Models;
using Microsoft.EntityFrameworkCore;
namespace CodeFirstDemo
{
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();
//*******************************************
//對ApplicationDbContext進行連線字串註冊
builder.Services.AddDbContext<ApplicationDbContext>(
db => db.UseSqlServer(
builder.Configuration.GetConnectionString("DefaultConnection")
), ServiceLifetime.Singleton);
//*******************************************
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
}
}
}
CodeFirst指令
主要常用的有這幾個,通常都只用add-migration
跟update-database
add-migration [name] #新增一個資料庫異動
update-database #更新資料庫
Script-Migration -Idempotent #產生資料庫異動的SQL 指令(這個很實用)
remove-migration #移除最後一個migration
drop-database #砍掉資料庫
如何下指令
下方這邊就是套件管理主控台,就可以開始下指令建立資料表與更新資料庫
0 Comments