PlusMagi's Blog By Pitt Phunsanit Backend,C# Programming,Database Entity Framework Core (EF Core) 101: เชื่อมต่อ Database, ออกแบบ DbContext, LINQ Queries และ Migrations

Entity Framework Core (EF Core) 101: เชื่อมต่อ Database, ออกแบบ DbContext, LINQ Queries และ Migrations

ในโลกของการพัฒนาแอปพลิเคชันยุคใหม่ การจัดการข้อมูลเป็นหัวใจสำคัญที่นักพัฒนาต้องเผชิญความท้าทายในการเชื่อมโยงโค้ดภาษาเชิงวัตถุ (Object-Oriented Code) เข้ากับโครงสร้างข้อมูลแบบสัมพันธ์ (Relational Database) อย่างมีประสิทธิภาพ การเขียนโค้ดเพื่อจัดการการเข้าถึงข้อมูล (Data Access Layer) ด้วยคำสั่ง SQL ดิบ ๆ ทั้งหมดนั้นไม่เพียงแต่ยุ่งยาก แต่ยังทำให้โค้ดขาดความยืดหยุ่นและยากต่อการบำรุงรักษา

Entity Framework Core (EF Core) คือเครื่องมือ ORM (Object-Relational Mapper) ที่ถูกออกแบบมาเพื่อแก้ปัญหานี้โดยเฉพาะ มันทำหน้าที่เป็นสะพานเชื่อมที่ทรงพลัง ให้เราสามารถทำงานกับฐานข้อมูล PostgreSQL ด้วยรูปแบบของ Object ในภาษา C# โดยที่เราไม่จำเป็นต้องเขียนคำสั่ง SQL ที่ซับซ้อนเลยแม้แต่น้อย

หลักการทำงานของ EF Core: 3 เสาหลัก

EF Core ไม่ใช่แค่ไลบรารี แต่เป็นชุดแนวคิดที่ประกอบด้วยส่วนสำคัญ 3 ส่วนที่ทำงานร่วมกันเพื่อสร้างระบบจัดการข้อมูลที่สมบูรณ์:

1. DbContext (Unit of Work)

DbContext คือหัวใจหลักของระบบ ทำหน้าที่เป็น Session หรือ Unit of Work ที่จัดการการเชื่อมต่อ (Connection) และสถานะของ Entity ทั้งหมดที่กำลังถูกใช้งาน มันเป็นตัวกลางที่รับผิดชอบในการติดตามการเปลี่ยนแปลงของข้อมูล (Change Tracking) ก่อนที่จะบันทึกกลับไปยังฐานข้อมูล PostgreSQL จริง

2. LINQ (Language Integrated Query)

LINQ ช่วยให้เราเขียนคำสั่ง Query ข้อมูลได้อย่างเป็นธรรมชาติเหมือนกับการเรียกใช้ Collection ใน C# ทำให้โค้ดอ่านง่ายและมีความเป็น Object-Oriented สูงมาก ตัวอย่างเช่น การดึงข้อมูลผู้ใช้ที่มีอายุมากกว่า 20 ปี:

C#

var users = context.Users.Where(u => u.Age > 20).ToList();

3. Migrations (Schema Management)

Migrations คือกลไกที่ช่วยให้เราสามารถอัปเดตโครงสร้าง (Schema) ของฐานข้อมูล PostgreSQL ให้ตรงกับ Model ในโค้ดของเราได้โดยอัตโนมัติ เมื่อมีการเปลี่ยนแปลงคลาสหรือคุณสมบัติใน Model เราเพียงแค่รันคำสั่ง Migration ระบบก็จะสร้างคำสั่ง SQL ที่จำเป็น (เช่น ALTER TABLE) เพื่ออัปเดตฐานข้อมูลให้เราโดยอัตโนมัติ

ขั้นตอนการใช้งาน EF Core กับ PostgreSQL

การใช้งาน EF Core ในโปรเจกต์จริงมีขั้นตอนที่ชัดเจน โดยมีลำดับดังนี้:

  1. กำหนด Model (POCO Class): สร้างคลาส C# ที่เป็นตัวแทนของตารางในฐานข้อมูล (เช่น Product)
  2. ตั้งค่า DbContext: กำหนดให้ DbContext รู้จัก Model และตั้งค่า Connection String ให้ชี้ไปยัง PostgreSQL
  3. สร้าง Migration: ใช้ Command Line เพื่อสร้างไฟล์ Migration ที่บรรจุคำสั่ง SQL ที่จำเป็น
  4. BASH / Shell

    dotnet ef migrations add InitialCreate
    
  5. อัปเดตฐานข้อมูล: สั่งให้ EF Core รันคำสั่ง SQL ที่อยู่ใน Migration ไปยังฐานข้อมูลจริง
  6. BASH / Shell

    dotnet ef database update
    

บทสรุป: ประสิทธิภาพที่เหนือกว่า

EF Core เป็นเครื่องมือที่ปฏิวัติวิธีการจัดการข้อมูลในโลก .NET โดยการลดช่องว่างระหว่างโลกของ Object และโลกของ Relational Database อย่างสมบูรณ์ การใช้ EF Core ร่วมกับ PostgreSQL ทำให้เราสามารถมุ่งเน้นไปที่ Business Logic ของแอปพลิเคชันได้อย่างเต็มที่ โดยไม่ต้องกังวลกับความซับซ้อนของการจัดการ SQL หรือการเขียนโค้ดที่ซ้ำซ้อนอีกต่อไป นี่คือรากฐานสำคัญที่ทำให้แอปพลิเคชันสมัยใหม่มีความรวดเร็วและยืดหยุ่นในการพัฒนาอย่างแท้จริง