2013-05-03 31 views
5

Mô tả cho DbContext nói: "Một trường hợp DbContext đại diện cho sự kết hợp của các mẫu Đơn vị công việc và Kho lưu trữ ...". Nhưng nhiều nhà phát triển có xu hướng tạo kho lưu trữ của riêng họ và UoW.Sự khác nhau giữa việc tạo UoW/Repository của chính chúng ta và sử dụng DbContext trực tiếp

Tôi có nên sử dụng DbContextDbSet trực tiếp hoặc nên có Kho lưu trữ của riêng mình không? Sự khác biệt là gì.

Có vấn đề gì nếu chúng tôi sử dụng trực tiếp DbContext không? Nếu tôi chuyển từ MS SQL sang Oracle trong tương lai thì sao?

Trả lời

5

theo MSDN

Lần khác, bạn có thể muốn viết Đơn vị ứng dụng cụ thể của riêng bạn của giao diện làm việc hoặc lớp mà kết thúc tốt đẹp các đơn vị bên trong của công việc từ công cụ kiên trì của bạn. Bạn có thể làm điều này vì một số lý do. Bạn có thể muốn thêm nhật ký, truy tìm hoặc xử lý lỗi cụ thể cho ứng dụng để quản lý giao dịch. Có lẽ bạn muốn đóng gói các chi tiết cụ thể về công cụ kiên trì của bạn từ các phần còn lại của ứng dụng . Bạn có thể muốn gói thêm này để làm cho nó dễ dàng hơn để trao đổi các công nghệ kiên trì sau này. Hoặc bạn có thể muốn quảng bá khả năng thử nghiệm trong hệ thống của mình. Nhiều người trong số các đơn vị thực hiện Công việc được xây dựng sẵn từ các công cụ bền vững thông thường rất khó để xử lý với các tình huống thử nghiệm đơn vị tự động.

Quay lại câu hỏi của bạn.

Tôi có nên sử dụng DbContext và DbSet trực tiếp hoặc nên có Kho lưu trữ của riêng mình?

Thực tế, không có vấn đề gì khi bạn đặt DbContextDbSet vào kho lưu trữ của mình. Chúng tôi sẽ tự hỏi chúng tôi muốn thử nghiệm dễ dàng hơn không. Nếu chúng tôi muốn thiết kế khung kiểm tra mọi thứ, chúng tôi không nên sử dụng trực tiếp DbContextDbSet trực tiếp vào số Repositories của bạn. Chúng ta nên sử dụng giao diện IDbContextFactory được sử dụng để cung cấp DbContext, chỉ hai xu của tôi.

Để giúp bạn có nhiều lượt xem về kho lưu trữ, bạn có thể tham khảo liên kết bên dưới để xem xét các tùy chọn giữa kho lưu trữ và DbContext.

http://huyrua.wordpress.com/2010/07/13/entity-framework-4-poco-repository-and-specification-pattern/

Có bất kỳ vấn đề nếu chúng ta sử dụng DbContext trực tiếp?

Không, không có vấn đề gì nếu bạn sử dụng trực tiếp DbContext. Nhưng nó sẽ lộn xộn nhiều quy tắc kinh doanh và một tấn quy mô lên các vấn đề như tập trung cơ sở dữ liệu, khó kiểm tra và vi phạm riêng biệt của mối quan tâm trong nguyên tắc thiết kế.

Nếu tôi chuyển từ MS SQL sang Oracle trong tương lai thì sao?

Thực ra, không có vấn đề gì khi bạn chuyển đổi giữa MS SQL và Oracle trong tương lai. Bạn chỉ cần thay đổi nhà cung cấp dữ liệu theo liên kết bên dưới khi sử dụng DbContext của khung pháp nhân.

http://www.devart.com/news/2008/directs475.html

hoặc MS Entity Framework Oracle Provider

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