Active Record là một mẫu thiết kế cho việc truy cập dữ liệu ...
Tại thời điểm này có hai mẫu thiết kế chính tôi dường như đi qua liên quan đến truy cập dữ liệu: ActiveRecord và Pattern Repository
Active Record
đối tượng của bạn chứa các phương pháp để kiên trì trạng thái của họ đến một DB (hoặc cơ chế bền bỉ khác) như vậy:
Bạn có thể có đối tượng Khách hàng.
Đối tượng khách hàng sẽ có một loạt các phương thức như Customer.Save() ;, Customer.Get (int id); và những người khác.
Những phương pháp này không thực sự liên quan đến khách hàng trong thế giới thực. Họ thực sự là về cơ sở hạ tầng của ứng dụng của bạn.
Repository Pattern
Trong mô hình kho, đối tượng khách hàng của bạn sẽ là một POCO, hoặc đối tượng câm. Nó chỉ có phương pháp và tài sản mà nó thực sự cần để đại diện cho một khách hàng (những thứ như tên, địa chỉ email, Danh sách đơn đặt hàng, vv)
Khi bạn muốn kéo dài các khách hàng - bạn chỉ cần vượt qua nó để kho của bạn
Repository.Save (MyCustomer).
Mẫu bản ghi hoạt động nhanh chóng và dễ dàng để làm việc. Thật không may, nó làm lộn xộn lên mô hình miền của bạn với những phương pháp này mà không thực sự có bất cứ điều gì để làm với một khách hàng. Điều này khiến việc duy trì mô hình miền của bạn khó hơn một chút theo thời gian.
Đối với nhiều trường hợp, rất thích hợp để sử dụng mẫu Bản ghi hoạt động. Ví dụ - Nếu tôi đang viết một ứng dụng khá đơn giản, có lẽ sẽ không thay đổi nhiều, tôi có lẽ sẽ kích hoạt SubSonic và tạo ra một bản ghi DAL hoạt động của tôi. Tôi muốn mã hóa mã kinh doanh của mình trong vòng 20 phút và tất cả các công cụ DB đã được xử lý.
Nếu, mặt khác, tôi đang mô hình hóa một miền đặc biệt phức tạp, với tính nhạy cảm cao để thay đổi, tôi thà giữ mô hình tên miền của tôi sạch sẽ, và thực hiện một mô hình kho với nHibernate hoặc tương tự ...
Đã lâu rồi tôi không thể truy cập dữ liệu của mình bằng cách sử dụng ADO.Net, và tôi không thực sự khuyên bạn nên nó có rất nhiều công cụ truy cập dữ liệu tuyệt vời.
+1. Giải thích rất tốt –