Chúng tôi hiện đang ở trong một tình huống mà chúng tôi có sự lựa chọn giữa việc sử dụng một trình ánh xạ quan hệ đối tượng bên ngoài hoặc tự lăn
Chúng tôi có một ứng dụng kế thừa (ASP.NET + SQL Server) trong đó lớp dữ liệu & lớp nghiệp vụ không may bị trộn lẫn với nhau. Hệ thống không đặc biệt phức tạp về khả năng truy cập dữ liệu. Nó đọc dữ liệu từ một nhóm lớn (35-40) các bảng liên quan đến nhau, thao tác nó trong bộ nhớ và lưu lại vào một số bảng khác ở định dạng tóm tắt. Bây giờ chúng tôi có cơ hội để tái cấu trúc và đang xem xét các công nghệ ứng cử viên để sử dụng để phân tách & cấu trúc đúng cách Truy cập dữ liệu của chúng tôi.
Bất cứ công nghệ nào chúng tôi quyết định, chúng tôi muốn:
- có các đối tượng POCO trong Mô hình miền của chúng tôi không biết gì về tính bền bỉ
- có một lớp trừu tượng để cho phép chúng tôi Đơn vị Kiểm tra các đối tượng mô hình miền của chúng tôi chống lại một nguồn dữ liệu cơ bản được mô phỏng
Rõ ràng có rất nhiều thứ trên đó về các Mẫu & Khung, v.v.
Cá nhân tôi đang thúc đẩy việc sử dụng EF kết hợp với Trình tạo kho lưu trữ có thể kiểm tra đơn vị ADO.NET / Trình tạo thực thể POCO . Nó đáp ứng tất cả các yêu cầu của chúng tôi, có thể dễ dàng được gói trong Mẫu Repo / UnitOfWork và Cấu trúc DB của chúng tôi hoàn toàn trưởng thành (đã trải qua một bộ tái cấu trúc) để chúng tôi sẽ không thực hiện các thay đổi hàng ngày cho mô hình.
Tuy nhiên, những người khác trong nhóm đang đề xuất kiến trúc / cán DAL của chúng ta hoàn toàn từ đầu. (Trình tạo dữ liệu tùy chỉnh, DataContexts, Kho lưu trữ, Giao diện ở mọi nơi, Sự phụ thuộc quá mức cần thiết để tạo các đối tượng cụ thể, Dịch thuật truy vấn LINQ-Under-Under tùy chỉnh, Triển khai bộ đệm tùy chỉnh, Triển khai FetchPlan tùy chỉnh ...) tôi như điên
Một số đối số được đưa ra là "Ít nhất chúng ta sẽ kiểm soát mã của chính mình" hoặc "Ôi tôi đã sử dụng L2S / EF trong một dự án trước đó và nó không có gì ngoài đau đầu". (Mặc dù tôi đã sử dụng cả trong Sản xuất trước đây và thấy bất kỳ vấn đề nào xảy ra rất ít và rất dễ quản lý)
Vì vậy, bất kỳ nhà phát triển / kiến trúc sư giàu kinh nghiệm nào của bạn ngoài kia có bất kỳ lời khôn ngoan nào có thể giúp tôi điều khiển sản phẩm này khỏi những gì dường như tôi sẽ là một thảm họa hoàn toàn. Tôi không thể không nghĩ rằng bất kỳ lợi ích nào có được khi tránh các vấn đề của EF, sẽ bị mất nhanh chóng bằng cách cố gắng phát minh lại bánh xe.