C# C-Sharp คือ ตอนที่ 12 : การเข้าถึงข้อมูลด้วย Entity Framework

  1. ทำความเข้าใจเกี่ยวกับ Entity Framework
  2. เหตุใดจึงต้องใช้ Entity Framework ในการทำแอป C#
  3. เอนทิตีเฟรมเวิร์กคอร์ (Entity Framework Core) เทียบกับ (Entity Framework 6)
  4. เริ่มต้นใช้งาน Entity Framework ในแอป C#
  5. การสอบถามข้อมูล (Querying Data)
  6. การแทรกข้อมูล (Inserting Data)
  7. การอัปเดตข้อมูล (Updating Data)
  8. การลบข้อมูล (Deleting Data)
  9. Entity Framework ในแอปพลิเคชัน C# ที่ซับซ้อน

เมื่ออาณาจักรดิจิทัลก้าวหน้า การทำแอพได้กลายเป็นส่วนสำคัญของโลกสมัยใหม่ สำหรับการทำแอพอย่างมีประสิทธิภาพ เราจำเป็นต้องจัดการข้อมูลอย่างเชี่ยวชาญ ซึ่งมักจะรวมถึงการเข้าถึง การอัปเดต และการจัดการฐานข้อมูล นี่คือจุดที่ Entity Framework ซึ่งเป็นเครื่องมือ Object-Relational Mapping (ORM) ยอดนิยมจาก Microsoft กลายเป็นสิ่งสำคัญในการทำแอพ C#

1. ทำความเข้าใจเกี่ยวกับ Entity Framework

Entity Framework เป็นเฟรมเวิร์ก ORM แบบโอเพ่นซอร์สสำหรับแอปพลิเคชัน .NET ที่ช่วยให้นักพัฒนาสามารถทำงานกับข้อมูลโดยใช้วัตถุเฉพาะโดเมน ทำให้ไม่ต้องใช้โค้ดการเข้าถึงข้อมูลส่วนใหญ่ Entity Framework ช่วยให้นักพัฒนาโต้ตอบกับฐานข้อมูลโดยใช้วัตถุ .NET ช่วยลดจำนวนโค้ดที่ต้องใช้ในการดำเนินงานฐานข้อมูล ซึ่งช่วยลดความยุ่งยากในกระบวนการทำแอพและทำให้สามารถจัดการได้มากขึ้น

2. เหตุใดจึงต้องใช้ Entity Framework ในการทำแอป C#

การใช้เครื่องมือ ORM เช่น Entity Framework มีข้อดีหลายประการ:

  1. ประสิทธิภาพการทำงาน : Entity Framework ช่วยลดจำนวนโค้ดที่นักพัฒนาจำเป็นต้องเขียน ซึ่งจะเป็นการเพิ่มผลผลิต
  2. Abstraction : Entity Framework สรุประบบฐานข้อมูล ช่วยให้นักพัฒนาสามารถสลับไปมาระหว่างฐานข้อมูลต่างๆ ด้วยการปรับเปลี่ยนโค้ดเล็กน้อย
  3. การบำรุงรักษา : การลดและทำให้ง่ายขึ้นของโค้ดเพิ่มความสามารถในการบำรุงรักษาโค้ด
  4. ประสิทธิภาพ : Entity Framework มีคุณลักษณะที่เพิ่มประสิทธิภาพ เช่น การโหลดแบบสันหลังยาว การแคช และการแบทช์ที่ช่วยให้สามารถจัดการข้อมูลได้อย่างมีประสิทธิภาพ

3. เอนทิตีเฟรมเวิร์กคอร์ (Entity Framework Core) เทียบกับ (Entity Framework 6)

Entity Framework Core (EF Core) คือ Entity Framework เวอร์ชันโอเพ่นซอร์สที่มีน้ำหนักเบา ขยายได้ และข้ามแพลตฟอร์ม สิ่งสำคัญคือต้องเข้าใจว่า EF Core ไม่ใช่แค่การอัปเกรดจาก EF6 แต่เป็นการเขียนใหม่ทั้งหมดเพื่อให้มีโอกาสเพิ่มประสิทธิภาพมากขึ้น แม้ว่า EF Core อาจไม่มีคุณสมบัติทั้งหมดของ EF6 แต่ก็มีข้อดีบางประการ เช่น การเป็นโอเพ่นซอร์ส ข้ามแพลตฟอร์ม และเพิ่มประสิทธิภาพบนคลาวด์

อย่างไรก็ตาม EF6 ยังคงเป็นผลิตภัณฑ์ที่รองรับและยังมีฟีเจอร์บางอย่างที่ไม่มีอยู่ใน EF Core การเลือกระหว่าง EF Core และ EF6 ขึ้นอยู่กับความต้องการเฉพาะของโครงการของคุณ

4. เริ่มต้นใช้งาน Entity Framework ในแอป C#

ก่อนอื่น คุณต้องแน่ใจว่าคุณได้ติดตั้งแพ็คเกจ Entity Framework แล้ว คุณสามารถทำได้ผ่าน NuGet Package Manager ใน Visual Studio

ใน EF คลาสหลักที่ประสานการทำงานของ Entity Framework สำหรับโมเดลข้อมูลที่กำหนดคือคลาส DbContext คุณสามารถสร้างคลาสนี้ได้โดยรับมาจากคลาสพื้นฐาน DbContext

ตัวอย่างเช่น:

public class MyDbContext : DbContext
{
    public MyDbContext(DbContextOptions<MyDbContext> options)
        : base(options)
    { }

    public DbSet<MyEntity> MyEntities { get; set; }
}

ในโค้ดนี้ MyDbContext คือคลาสบริบทของคุณ และ MyEntity เป็นคลาสที่แสดงถึงตารางในฐานข้อมูลของคุณ DbSet<MyEntity> คือคอลเล็กชันของวัตถุ MyEntity ที่คุณสามารถใช้เพื่อสอบถามและบันทึกอินสแตนซ์

ตอนนี้คุณสามารถเพิ่ม สืบค้น อัปเดต และลบข้อมูลโดยใช้คลาส DbContext ของคุณ

5. การสอบถามข้อมูล (Querying Data)

ในการสืบค้นข้อมูล คุณเพียงแค่เขียนแบบสอบถาม LINQ:

using (var context = new MyDbContext())
{
    var entities = context.MyEntities
        .Where(e => e.Property > 5)
        .ToList();
}

โค้ดนี้ดึงวัตถุ MyEntity ทั้งหมดจากฐานข้อมูลที่ Property มากกว่า 5

6. การแทรกข้อมูล (Inserting Data)

ในการแทรกข้อมูล คุณต้องสร้างอินสแตนซ์ใหม่ของคลาสเอนทิตีของคุณและเพิ่มลงในบริบท:

var myEntity = new MyEntity { Property = 7 };

using (var context = new MyDbContext())
{
    context.MyEntities.Add(myEntity);
    context.SaveChanges();
}

โค้ดนี้สร้างวัตถุใหม่ MyEntity และบันทึกลงในฐานข้อมูล

7. การอัปเดตข้อมูล (Updating Data)

ในการอัปเดตข้อมูล ก่อนอื่นคุณต้องเรียกข้อมูลเอนทิตี จากนั้นแก้ไขคุณสมบัติ จากนั้นเรียก SaveChanges:

using (var context = new MyDbContext())
{
    var entity = context.MyEntities.First();
    entity.Property = 9;
    context.SaveChanges();
}

โค้ดนี้เรียกวัตถุแรก MyEntity เปลี่ยน Property เป็น 9 แล้วอัพเดตฐานข้อมูล

8. การลบข้อมูล (Deleting Data)

หากต้องการลบข้อมูล ก่อนอื่นคุณต้องดึงเอนทิตี จากนั้นจึงลบออกจากบริบท จากนั้นเรียก SaveChanges:

using (var context = new MyDbContext())
{
    var entity = context.MyEntities.First();
    context.MyEntities.Remove(entity);
    context.SaveChanges();
}

โค้ดนี้ดึง MyEntity วัตถุแรกและลบออกจากฐานข้อมูล

9. Entity Framework ในแอปพลิเคชัน C# ที่ซับซ้อน

ตัวอย่างที่แสดงที่นี่ค่อนข้างง่าย อย่างไรก็ตาม ในแอปพลิเคชันที่ซับซ้อน คุณจะต้องจัดการกับความสัมพันธ์ระหว่างตาราง (แบบหนึ่งต่อหนึ่ง หนึ่งต่อหลาย กลุ่มต่อกลุ่ม) การโหลดอย่างกระตือรือร้นหรือการโหลดแบบขี้เกียจของข้อมูลที่เกี่ยวข้อง ความขัดแย้งที่เกิดขึ้นพร้อมกัน ธุรกรรม และคุณสมบัติขั้นสูงอื่นๆ Entity Framework รองรับสถานการณ์เหล่านี้ทั้งหมด แต่การทำความเข้าใจสถานการณ์เหล่านี้จำเป็นต้องเจาะลึกลงไปในเอกสารประกอบ


Entity Framework เป็นเครื่องมือล้ำค่าสำหรับการจัดการข้อมูลในการทำแอพ C# นำเสนอสิ่งที่เป็นนามธรรมเหนือฐานข้อมูลเชิงสัมพันธ์ และทำให้โค้ดการดำเนินการข้อมูลง่ายขึ้น สะอาดขึ้น และง่ายต่อการบำรุงรักษา แม้ว่าจะมีช่วงการเรียนรู้เล็กน้อย แต่ประโยชน์ที่ได้รับก็คุ้มค่ากับการลงทุน ทำให้ Entity Framework เป็นเครื่องมือที่จำเป็นสำหรับการทำแอพ C#


C# C-Sharp คืออะไร

C# C-Sharp คือ ตอนที่ 11 : LINQ (Language Integrated Query)
C# C-Sharp คือ ตอนที่ 13 : การทดสอบหน่วย (Unit Testing)