Scaffolding
Database first concept จะต้องจัดเตรียมโครงสร้างในฐานข้อมูลให้เสร็จการเริ่ม Coding หลังจากจัดเตรียมแล้วสามารถเริ่มใช้งาน EF Core ได้โดยการ
Install Nuget Packages
ติดตั้ง Package เหล่านี้เพื่อเริ่มต้นใช้งาน Entity Framework Core
- Microsoft.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.Design
- Oracle.EntityFrameworkCore
- Microsoft.EntityFrameworkCore.Tools
ตรวจสอบตารางใน Database ต้องมี Primary Key
ตรวจสอบโครงสร้าง table หรือ view ว่ามีโครงสร้างที่ถูกต้องครบถ้วนแล้วหรือไม่เช่น Primary key, Nullable หรือ Foreign Key
เตรียมพื้นที่สำหรับการสร้าง DbContext และ Class ต่าง ๆ
สร้าง folder สำหรับการเก็บไฟล์ class ที่จะถูกสร้างขึ้นโดยการ Reverse engineering
Reverse Engineering Database
ทำการรันคำสั่ง Scaffold ใน Command line
Scaffold-DbContext "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<Database Host>)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=<Service Name>)));User Id=<Username>;Password=<Password>;"
Parameter อื่น ๆ สำหรับการรันคำสั่ง Scaffold-DbContext
-OutputDir <String> กำหนด folder ปลายทาง ที่อยู่ใน project สำหรับ model files
-Context <String> กำหนดชื่อ DbContext Class
-Schemas <String[]> กำหนดเฉพาะ Schemas
-Tables <String[]> กำหนดเฉพาะ Table
–NoPluralize กำหนดให้ Model ชื่อเดียวกับ Database
การเปลี่ยนแปลง Table มีข้อควรระวัง เมื่อทำการเปลี่ยนแปลง database อาจทำให้ entity mapping ไม่เจอ และอาจทำให้ไม่สามารถ connect กับ database ได้
- Alter the table
- Run the database scaffold command
-Force
กรณีต้องการใช้ชื่อเดียวกับ Database ใช้เพิ่ม parameter –NoPluralize
Register Context as service
builder.Services.AddDbContextFactory<ContactContext>(opt =>
opt.UseOracle($"Data Source={nameof(ContactContext.ContactsDb)}.db"));
หลังจากได้ model และ สร้าง context แล้ว จะต้องไปลงทะเบียน DbContext ในไฟล์ Startup.cs -> ConfigureServices method โดย option สามารถเลือกใช้ database providers ต่างๆ ซึ่งจะต้องไปติดตั้ง Packageเพิ่มเติม เช่น Oracle.EntityFrameworkCore สำหรับ Oracle และ Npgsql.EntityFrameworkCore.PostgreSQL สำหรับ PostgreSQL เป็นต้น