ฉันกำลังพยายามล้างวิธีดำเนินการในโครงการ ASP.NET MVC โดยใช้โมเดลมุมมอง ในปัจจุบัน โมเดลมุมมองของฉันมีเอนทิตีที่อาจมีความสัมพันธ์กับเอนทิตีอื่น ตัวอย่างเช่น คลาส ContactViewModel อาจมีผู้ติดต่อ ซึ่งอาจมีที่อยู่ ซึ่งทั้งสองเป็นเอนทิตีที่แยกจากกัน หากต้องการค้นหารายการวัตถุที่ติดต่อ ฉันอาจดำเนินการดังนี้
IList<Contact> contacts;
using (IContactRepository repository = new ContactRepository())
{
contacts = repository.Fetch().ToList();
}
EditContactViewModel vm = new EditContactViewModel(contacts);
return View(vm);
วิธีนี้ทำให้เกิดปัญหาเล็กน้อย ตัวอย่างเช่น พื้นที่เก็บข้อมูลจะถูกสอบถามภายในคำสั่งที่ใช้ เมื่อถึงเวลาที่มุมมองแสดงผล บริบทก็อยู่นอกขอบเขต ทำให้เป็นไปไม่ได้ที่มุมมองจะสอบถามที่อยู่ที่เกี่ยวข้องกับผู้ติดต่อ ฉันสามารถเปิดใช้งานการโหลดอย่างกระตือรือร้นได้ แต่ฉันไม่ต้องการ นอกจากนี้ ฉันไม่ชอบที่โมเดลเอนทิตีเข้ามาอยู่ในมุมมองของฉัน (ฉันรู้สึกว่าเป็นความคิดที่ไม่ดีที่ View ของฉันจะมีความรู้เกี่ยวกับความสัมพันธ์ระหว่างผู้ติดต่อและที่อยู่ แต่อย่าลังเลที่จะไม่เห็นด้วยกับฉัน)
ฉันได้พิจารณาสร้างคลาสขุนที่มีคุณสมบัติจากทั้งเอนทิตีผู้ติดต่อและที่อยู่ จากนั้น ฉันสามารถฉายเอนทิตีผู้ติดต่อและที่อยู่ลงในออบเจ็กต์ใหม่ที่แบนราบได้ ข้อกังวลประการหนึ่งของฉันเกี่ยวกับแนวทางนี้คือวิธีดำเนินการของฉันอาจยุ่งเล็กน้อย และฉันไม่คิดว่า AutoMapper จะสามารถแมปวัตถุตั้งแต่สองชิ้นขึ้นไปให้เป็นประเภทเดียวได้
เทคนิคใดที่เป็น/เหมาะสมที่สุดในการเอาชนะข้อกังวลของฉัน?