2009-05-20 24 views
6

Bạn đang bận rộn tạo một ứng dụng mới, về cơ bản tôi có dataccess, lớp dịch vụ và lớp trình bày ... Tất cả các công trình tuyệt vời nhưng tôi đang sử dụng các lớp thực thể được trả về bởi EF. Vấn đề ở đây là tôi vượt qua các lớp trình bày vì vậy tôi cần phải thêm tham chiếu khung thực thể/dataccess vào lớp trình bày - KHÔNG TỐT:Máy phát điện để sử dụng với Khuôn khổ thực thể sử dụng mẫu kho lưu trữ?

Vì vậy, ý tưởng của tôi là như sau và đang tìm kiếm một số trợ giúp và xác nhận rằng tôi đi xuống các đường quyền ...

  1. Tạo một tập các lớp trong lớp dịch vụ như khách hàng, đặt hàng vv vì các lớp trình bày có một tham chiếu đến các lớp dịch vụ ..

  2. Khi một khách hàng thực thể được trả về trong dataccess tôi sẽ trả về lớp thực thể tức là Khách hàng với dịch vụ d tôi sẽ làm các bản đồ ở đây - Không quá chắc chắn nếu tôi như thế này?

  3. nơi sẽ là nơi tốt nhất cho "lớp tiêu chuẩn" mà tôi sử dụng để lập bản đồ, nếu tôi đặt chúng trong lớp dịch vụ và thực hiện ánh xạ dữ liệu thì điều này sẽ tạo tham chiếu vòng tròn dưới dạng dịch vụ] dịch vụ> DATAACCESS .. - nó phải là chỉ có một cách tức là dịch vụ> DATAACCESS

tôi đã nghĩ đến việc sử dụng Automapper (http://www.codeplex.com/AutoMapper) để chăm sóc này, am i trên đường phải không ??? Bất kỳ ý tưởng hoặc ví dụ nào thực sự được đánh giá cao ..

Như tôi nói điều duy nhất là khi tôi trở về từ dataaccess đến lớp dịch vụ (sử dụng Iqueryable) tôi cần phải ánh xạ chúng ra khỏi các lớp thực thể và sử dụng các lớp thu chuẩn ..

Tôi nghĩ rằng đây là nơi tôi bị nhầm lẫn, tôi cảm thấy nó không tốt bằng cách sử dụng các lớp thực thể vì điều đó có nghĩa là tôi cần tham chiếu đến khung thực thể/dataaccess trong lớp trình bày của tôi để có thể truy cập các lớp thực thể.

Trả lời

3

Bạn đã nhấn một trong những điểm yếu của EF v1. Bây giờ, có, đi các tuyến đường với AutoMapper chắc chắn cho phép bạn chuyển đổi các thực thể EF của bạn để thực thể kinh doanh "thẳng" và sử dụng chúng trong lớp cao hơn của bạn.

Ngoài ra, EF v4 là do .NET 4.0/Visual Studio 2010 nên mang lại rất nhiều giải pháp trong nhiều lĩnh vực vấn đề - hỗ trợ cho POCOs thẳng của bạn (đối tượng CLR cũ) và rất nhiều hơn. Hãy xem EF Design Blog. Nhóm nghiên cứu đã đăng một số bài đăng rất thú vị, rất hứa hẹn gần đây, liên quan đến EF v4. Tôi đang mong chờ nó!

Marc

0
  1. Bạn có thể sử dụng đối tượng EF trong dự án Web nếu bạn trích xuất các giao diện của họ vào dự án cốt lõi/chung của bạn và gửi lại các loại giao diện từ kho hoặc dịch vụ, mà các dự án Web sử dụng. Bạn có thể làm cho đối tượng EF thực hiện các giao diện của bạn, bằng cách tạo ra các lớp học phần và bổ sung ngay:

    phần lớp khách hàng: ICustomer

  2. Mặc dù bạn có thể làm 1. lừa, có lẽ bạn nào nên sử dụng để lập bản đồ automapper những thực thể đó cho các đối tượng ViewModel tùy chỉnh của bạn, phù hợp với chế độ xem cụ thể của bạn.Bạn cũng có thể làm cho các phương thức truy vấn kho/dịch vụ trả về trực tiếp DTO/ViewModels - nó sẽ cho phép truy vấn hiệu quả hơn đôi khi (chỉ truy vấn các cột cần thiết, v.v), nhưng điều đó sẽ yêu cầu ánh xạ EF bổ sung.

Các vấn đề liên quan