เลเยอร์การนำเสนอของฉันอยู่ใน MVC 3
ฉันมีชั้นการเข้าถึงข้อมูลที่ส่งคืนที่เก็บข้อมูล แต่ละที่เก็บถูกแมปกับตารางเดียว
ตัวอย่างเช่น ฉันมีอินเทอร์เฟซที่เก็บข้อมูลต่อไปนี้:
- ICustomerRepository
- ICustomerTypeRepository
ฉันมีการใช้งาน Entity Framework ของที่เก็บเหล่านี้ การใช้งานเหล่านี้ได้รับการฉีดเข้าไปในรันไทม์ด้วย Ninject
ฉันมีตัวควบคุมสองตัว:
- ลูกค้าคอนโทรลเลอร์
- ตัวควบคุมประเภทลูกค้า
คอนโทรลเลอร์แต่ละตัวมีชุดรูทีน CRUD ลูกค้าจะต้องมีแบบ
ในการสร้างบันทึกลูกค้า ฉันต้องใช้ EFCustomerTypeRepository
ตอนนี้ฉันมี Constructor ภายใน CustomerController ซึ่งมีลักษณะดังนี้:
public class CustomerController: Controller
{
private ICustomerRepository customerRepository;
private ICustomerTypeRepository customerTypeRepository;
public CustomerController(ICustomerRepository customerRepository,
ICustomerTypeRepository customerTypeRepository)
{
this.customerRepository = customerRepository;
this.customerTypeRepository = customerTypeRepository;
}
...
การพัฒนายังอยู่ในช่วงเริ่มต้น และหากฉันใช้วิธีนี้ ตัวสร้างนี้จะมีพารามิเตอร์ 5 ตัวขึ้นไปภายในไม่กี่วันข้างหน้า นี่ดูไม่ถูกต้อง
ฉันสามารถเก็บตรรกะทั้งหมดนี้ไว้ใน EFCustomerRepository ได้ แต่การทำเช่นนี้จะทำลายหลักการความรับผิดชอบเดียว ดังนั้นฉันจะไม่ทำอย่างนั้น
สุดท้ายนี้ ฉันสามารถรวมที่เก็บข้อมูลเหล่านี้และส่งอ็อบเจ็กต์ประเภท RepositoryWrapper เดียวไปยังคอนโทรลเลอร์ของฉันได้
ฉันไม่ต้องการแนะนำกรอบงานและเครื่องมือใด ๆ มากไปกว่าที่ฉันต้องทำ ฉันตั้งเป้าที่จะบรรลุการเชื่อมต่อแบบหลวมๆ และความสามารถในการขยายที่ง่ายดาย แต่ตอนนี้ฉันติดอยู่ระหว่างการส่งพารามิเตอร์เพิ่มเติมไปยังตัวสร้าง หรือการเขียน wrapper สำหรับที่เก็บ
ฉันใช้ MVC 3, EF 4.1, Ninject, Moq และ Automapper ขอบคุณ