>Andy , 2023/03/28 # 以EntityFramework方式建立資料表(以PostgresSQL為例) ## Outline 1. Code First是什麼? 2. 開發環境 3. 安裝套件 4. 建立Model 5. 建立DbContext 6. 連線字串設定及program.cs設定 7. 建立Migrations及資料表 # Code First是什麼? Code First 是一種使用Entityframework(EF)的方式,編寫程式碼後自動生成資料表的方法,開發人員只需要定義實體、關聯、主鍵、外來鍵,便可透過指令產生資料表。與傳統方法(DB First)先設計好資料表再連線操作的方式相反。 # 開發環境 * VS 2022 * ASP.NET core 7 # 安裝套件 於專案目錄打CMD,並執行下列指令: ``` dotnet add package Microsoft.EntityFrameworkCore.Tools dotnet add package Microsoft.Extensions.Configuration.Json dotnet add package Microsoft.Extensions.Logging.Console dotnet tool install --global dotnet-ef dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version 7.0.3 ``` 最後一行是為了使用postgresSQL,若使用MSSQL則不需要。 # 建立Model 根據ER-model的設計,建立各資料表所需欄位的Model,如 ```csharp public class Book { [Key] public int BookId { get; set; } public string? BookName { get; set; } public BookType BookType { get; set; } public DateTime PublishDate { get; set; } public ShelveStatus ShelveStatus { get; set; } public Language Language { get; set; } public string? Version { get; set; } public DateTime LimitedDate { get; set; } public DateTime CreatedDate { get; set; } = DateTime.Now; public string? CreatorName { get; set; } public DateTime UpdatedDate { get; set; } public string? UpdatorName { get; set; } } ``` # 建立DbContext 建立完所需的Model後,接下來建立DbContext。 ```csharp public class LibsysDbContext : DbContext { public DbSet<Book> Book { get; set; } public LibsysDbContext(DbContextOptions<LibsysDbContext> options) : base(options) { } //protected override OnConfiguring(DbContextOptionsBuilder optionsBuilder) //{ // 使用PostgresSQL不會用到這段 //} } ``` # 連線字串設定及program.cs設定 開啟appsetting.js,加入PostgrsSQL的連線字串(請自行設定$部分) ``` "ConnectionStrings": { "postgres_db": "Server=localhost;Username=$username; Database=$db; Port=5432; Password=$password;" } ``` 開啟program.cs,找到Add services to the container.這行註解,並在下方設定PostgresSQL的連線設定 ```csharp // Add services to the container. builder.Services.AddDbContext<LibsysDbContext>(option => option.UseNpgsql(builder.Configuration.GetConnectionString("postgres_db")) ); ``` # 建立Migrations及資料表 於專案目錄開啟CMD,執行以下指令(InitialCreate可以自行命名) ``` dotnet-ef migrations add InitialCreate ``` 成功的話會自動建立Migrations資料夾,並產生"日期_InitialCreate.cs",接著繼續執行 ``` dotnet-ef database update ``` 成功的話,開啟pgAdmin就會看到table開好了。 ###### tags: `back-end`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up