Using EF Core
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 ได้
1. Alter the table
2. Run the database scaffold command -Force
Naming tips
กรณีต้องการใช้ชื่อเดียวกับ 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 เป็นต้น