ข้ามไปที่เนื้อหา

Using EF Core

Database first concept จะต้องจัดเตรียมโครงสร้างในฐานข้อมูลให้เสร็จการเริ่ม Coding หลังจากจัดเตรียมแล้วสามารถเริ่มใช้งาน EF Core ได้โดยการ

Install Nuget Packages

ติดตั้ง Package เหล่านี้เพื่อเริ่มต้นใช้งาน Entity Framework Core

  1. Microsoft.EntityFrameworkCore
  2. Microsoft.EntityFrameworkCore.Design
  3. Oracle.EntityFrameworkCore
  4. 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 เป็นต้น