บทความชุด .NET 6 แบบจับมือทำ — #8:Domain Project
Domain Project
อ้อมโลกไปไกล ในที่สุดก็ได้กลับมาเขียน Code ต่อสักทีครับ ฮ่าๆ ในขั้นตอนนี้เราจะกลับมาเขียน Class เพื่อใช้เป็น Business Domain Model ของเรานะครับ
ในบทความนี้เราจะสมมติว่าเราพัฒนาระบบให้บริการข้อมูลเกี่ยวกับสถานที่ท่องเที่ยวในประเทศไทยนะครับ โดยเราจะแบ่งข้อมูลเป็นสามส่วนดังนี้
- จังหวัดในประเทศไทย
- จุดสนใจในจังหวัดต่างๆ
สร้าง Business Domain Model
เริ่มต้นด้วยการเข้าไปสร้าง Folder ชื่อ Entities ใน Domain Project นะครับ เสร็จแล้วให้สร้าง 4 ไฟล์ดังนี้
_IBaseEntity.cs
=> คือ Interface สำหรับกำหนดมาตราฐานของ Properties ที่ Business Domain Model ทั้งหมดควรจะมี_BaseEntity.cs
=> คือ Class ที่นำ Interface _IBaseEntity มา Implement เช่นId
(PK สำหรับการสรา้ง Table),CreatedUTC
(วันเวลาที่สร้าง Record),UpdatedUTC
(วันเวลาที่แก้ไข Record),IsActive
(สถานะของ Record ว่ายังใช้งานได้ หรือถูกปิดการใช้งานไปแล้ว)Province.cs
=> คือ Class สำหรับเก็บข้อมูลจังหวัดในประเทศไทยPointOfInterest.cs
=> คือ Class สำหรับเก็บข้อมูลจุดสนใจในจังหวัดต่างๆ
เสร็จแล้วให้ทำการ Copy Code จากลิ้งข้างล่างไปใส่ในทั้ง 4 Files นะครับ
ที่ 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 ดังนี้
ลุยกันครับบบบ
- #0: เกริ่นนำ
- #1: ติดตั้งโปรแกรม
- #2: รวม Cheat Sheet
- #3: Empty Solution in GitHub
- #4: พัฒนาโครงสร้างของ Source Code
- #5: VS Code Debugging
- #6: Configuration
- #7: Dependency Injection & Service Lifetime
- #8: Domain Project
- #9: Core Project
- #10: Infra Project
- #11: API Project
- #12: Unit Testing
- #13: Logging and Monitoring
- #14:เพิ่มความปลอดภัยด้วย OAuth2 & OpenID Connect
- #15: Background Process & Scheduler
- #16: Health Checks
- #17: The Twelve-Factor App
- #18: Deployment — Docker
- #19: Deployment — Azure App Service
- #20: Deployment — Azure Container Apps