Tôi đang cố gắng để trở thành một nhà phát triển tốt hơn ...Tách Mối quan tâm Pattern Repository & Entity Framework 3.5
Những gì tôi đang làm việc với:
- Net MVC Framework 1.0
- Entity Framework 3,5
tôi đã làm một số đọc và tôi nghĩ rằng những gì tôi muốn làm là:
- Tạo kho lưu trữ cho từng tổng hợp trong miền. Ví dụ, một kho lưu trữ Order sẽ quản lý OrderItems của Order.
- Tạo một lớp dịch vụ để xử lý logic nghiệp vụ. Mỗi kho lưu trữ sẽ có một đối tượng dịch vụ tương ứng với các phương thức tương tự.
- Tạo DTO để qua lại giữa kho và dịch vụ
- Có thể tạo Chế độ xem là lớp cho Chế độ xem cần sử dụng.
Tôi có một giao diện kho lưu trữ cơ sở đó tổng hợp các giao diện kho lưu trữ của tôi sẽ thực hiện ...
public interface IRepository<T>
{
IEnumerable<T> ListAll();
T GetById(int id);
bool Add(T entity);
bool Remove(T entity);
}
thứ tự của tôi giao diện Repository được định nghĩa như sau ... có thể sẽ là phương pháp bổ sung khi tôi nhận được nhiều hơn vào bài tập học tập này.
public interface IOrderRepository : IRepository<Order>
{
}
Các lớp dịch vụ của tôi về cơ bản được xác định giống như kho lưu trữ ngoại trừ việc thực hiện từng dịch vụ bao gồm logic nghiệp vụ. Các dịch vụ sẽ có một giao diện kho lưu trữ trong hàm tạo (tôi chưa sẵn sàng cho IoC trong bài tập này nhưng tin rằng đó là nơi tôi muốn kết thúc xuống đường).
- Việc triển khai kho lưu trữ sẽ đẩy và kéo từ cơ sở dữ liệu bằng cách sử dụng Khung thực thể. Khi lấy dữ liệu; các phương pháp sẽ chỉ trả lại DTO và không phải đối tượng được tạo bởi EF
- Các dịch vụ (như tôi gọi chúng) sẽ kiểm soát kho lưu trữ và thực hiện logic nghiệp vụ. Các dịch vụ là những gì bạn sẽ thấy trong bộ điều khiển, tức là _orderService.GetById (1).
- Đây là nơi tôi bắt đầu lật nổi và có thể sử dụng một số phản hồi ... tôi có thể có các lớp dịch vụ của tôi cư trú lớp ViewModel ... tôi không có lớp ViewModel .... có lẽ đó là quá nhiều ánh xạ từ một loại khác?
Tôi rất muốn nhận được một số phản hồi về hướng tôi đang đề cập đến việc phân tách các mối quan tâm.
Cảm ơn
Tôi đã cố gắng làm điều tương tự, nhưng tôi không thể nghĩ ra cách tốt để xử lý phương pháp bao gồm EF? –
P.S. Bạn có chắc là bạn có nghĩa là EF 3.5? Tôi nghĩ phiên bản 1 là phiên bản hiện tại và phiên bản 2 đang trong giai đoạn thử nghiệm. Hoặc, tôi đang sử dụng phiên bản cũ của nó. –
EF 3.5 = phiên bản 1, EF 4.0 = phiên bản 2 – bobwah