บทความชุด .NET 6 แบบจับมือทำ — #8:Domain Project

Ponggun
T. T. Software Solution
2 min readFeb 18, 2023

Domain Project

อ้อมโลกไปไกล ในที่สุดก็ได้กลับมาเขียน Code ต่อสักทีครับ ฮ่าๆ ในขั้นตอนนี้เราจะกลับมาเขียน Class เพื่อใช้เป็น Business Domain Model ของเรานะครับ

ในบทความนี้เราจะสมมติว่าเราพัฒนาระบบให้บริการข้อมูลเกี่ยวกับสถานที่ท่องเที่ยวในประเทศไทยนะครับ โดยเราจะแบ่งข้อมูลเป็นสามส่วนดังนี้

  • จังหวัดในประเทศไทย
  • จุดสนใจในจังหวัดต่างๆ

สร้าง Business Domain Model

เริ่มต้นด้วยการเข้าไปสร้าง Folder ชื่อ Entities ใน Domain Project นะครับ เสร็จแล้วให้สร้าง 4 ไฟล์ดังนี้

  1. _IBaseEntity.cs => คือ Interface สำหรับกำหนดมาตราฐานของ Properties ที่ Business Domain Model ทั้งหมดควรจะมี
  2. _BaseEntity.cs => คือ Class ที่นำ Interface _IBaseEntity มา Implement เช่น Id (PK สำหรับการสรา้ง Table), CreatedUTC (วันเวลาที่สร้าง Record), UpdatedUTC (วันเวลาที่แก้ไข Record), IsActive (สถานะของ Record ว่ายังใช้งานได้ หรือถูกปิดการใช้งานไปแล้ว)
  3. Province.cs => คือ Class สำหรับเก็บข้อมูลจังหวัดในประเทศไทย
  4. PointOfInterest.cs => คือ Class สำหรับเก็บข้อมูลจุดสนใจในจังหวัดต่างๆ
ตัวอย่างการใช้งาน C# Extension ในการสร้าง File ใหม่

เสร็จแล้วให้ทำการ Copy Code จากลิ้งข้างล่างไปใส่ในทั้ง 4 Files นะครับ

หน้าตา Base Entity และการนำไปสืบทอดต่อให้กับ Province และ PointOfInterest ทำให้ทั้งสอง Classes นี้มี Properties พื้นฐานที่เหมือนกัน (Id, CreatedUTC, UpdatedUTC, IsActive)

ที่ Province Class เราจะพบว่ามีการสร้าง ICollection ขึ้นมาและอ้างอิงไปยัง PointOfInterest และใน PointOfInterest Class นั้น เราสร้าง Property ชื่อ Province และ ProvinceId

เพื่อใช้เป็นความสัมพันธ์แบบ 1 (Province) — Many (PointOfInterest)

ซึ่งจะถูกใช้งานอีกทีใน Entity Framework เพื่อสร้าง Database Schema and Relation โดยจะกล่าวถึงในบทของ Infra Project ในภาพหลังนะครับ

เราจะเจอ Nullable Warning อยู่บ่อยๆใน .NET 6 นะครับ เราสามารถปิด Warning นี้ได้ด้วยการเข้าไปแก้ไข .csproj ดังนี้

Nullable Warning รัวๆๆๆๆ
ลบ <Nullable> Tag ออกเบย
Warning หายแว้ปปป

--

--

Ponggun
T. T. Software Solution

Development Manager, Web Developer with ASP.Net, ASP.net Core, Azure and Microsoft Technologies