Tôi đang tạo một khung công tác WPF/MVVM để tạo mã cho các lớp mô hình.Các đặc tính tốt nhất của khung công tác datalayer cho các ứng dụng WPF/MVVM là gì?
tôi đang lập kế hoạch để có cho mỗi cơ sở dữ liệu bảng/web-dịch vụ (ví dụ: "Customers") hai lớp mô hình:
- một mô hình lớp học ít (ví dụ: "Khách hàng")
- và một lớp mô hình số nhiều (ví dụ: "Khách hàng")
các số ít model class có tất cả các thuộc tính của nó (FirstName, LastName, vv) cộng với tất cả các phương pháp mà nó có ý nghĩa cho một singula ví dụ r, ví dụ: Lưu(), Xóa(), Tính toánSalary(), v.v.
Mô hình số nhiều có một bộ sưu tập các đối tượng mô hình số ít, cùng các phương pháp vì bạn cũng muốn thực hiện trên một nhóm đối tượng đơn lẻ ví dụ Lưu(), Xóa(), CalculateSalary(), nhưng cũng có các phương thức cụ thể như Sort() và các phương thức giúp dễ dàng cho các nhóm nhất định, ví dụ: LoadAllGoldCustomers(), hoặc thậm chí LoadWithSql (string sql) vv
tôi đã thực hiện một khuôn khổ như thế này trước (PHP) và nó làm cho rất dễ dàng để viết và hiểu mã như thế này:
Customers customers = new Customers("all");
customers.CalculateSalary();
lớp một cặp vợ chồng được thừa kế (khoản và Items) mất hầu hết các mã ra khỏi lớp học ít và số nhiều cá nhân cho mỗi bảng cơ sở dữ liệu, làm cho một môi trường rất sạch sẽ để chương trình trong.
Tuy nhiên, tôi đã hiếm thấy khác các ứng dụng thực hiện việc này phân chia lớp mô hình số ít/số nhiều. Thay vào đó, hầu như luôn có một lớp cho mỗi bảng cơ sở dữ liệu, ví dụ: Customer
và lớp này có bất kỳ phương pháp số nhiều nào cần thiết, ví dụ: GetCustomers (string sql) vv
Tôi chỉ nhận thấy trong WPF Model-View-ViewModel Toolkit 0.1 hương, họ có bạn thực hiện hai mô hình của họ "mô hình" thư mục hai lớp:
- Customer.cs (chỉ lĩnh vực)
- (phương pháp một Danh sách Load()) CustomersDataSource.cs
nào có vẻ là một khái niệm tương tự, chỉ là lớp "số nhiều" được gọi là một DataSource.
Vì vậy, bây giờ tôi sắp thực hiện một khung công tác khác dựa trên WPF/MVVM và có thể quyết định cách tôi muốn cấu trúc các lớp mô hình. Tôi muốn khuôn khổ để được:
- rõ ràng và dễ dàng để chương trình chống lại từ ViewModel, vì thế mà tách biệt rõ ràng các lớp mô hình ít và số nhiều, bạn nên chỉ phải thuyết minh một lớp ít hoặc số nhiều và gọi một phương pháp trên đó và bạn có dữ liệu của mình.
- phù hợp tốt với các mô hình MVVM (mà tôi hiểu phương tiện để giữ như đơn giản càng tốt, chỉ cần có tài sản và phương pháp mà các ViewModel có thể gọi điện thoại, nhưng thực hiện không có tính năng WPF cụ thể như INotifyProperityChanged)
- muốn datalayer của tôi để ngồi trên bất kỳ nguồn dữ liệu, vì vậy nếu tôi sử dụng LINQ-to-SQL, tôi vẫn gọi các lớp mô hình của riêng mình, và nếu tôi muốn chuyển sang lưu trong Oracle, tôi viết lớp bộ điều hợp dữ liệu thấp hơn cho các lớp của mình tương tác với điều đó.
- tận dụng lợi thế của LINQ theo cách tốt nhất có thể
tôi sẽ đánh giá cao thông tin phản hồi từ những người đã phát triển datalayers cho các khuôn khổ đặc biệt là sử dụng WPF/MVVM/Composite Thư viện ứng dụng và những đặc điểm bạn tìm thấy làm việc tốt nhất, hoặc nếu bạn đã làm việc với các khung công tác khác như CSLA, Subsonic, vv Ngoài ra, bất kỳ trải nghiệm hoặc ý tưởng nào về cách LINQ thay đổi/đơn giản hóa việc xây dựng cấu trúc datalayer. Cảm ơn.
+1 vì bạn đã chỉ ra rằng các phương thức bền vững không hoạt động tốt bên trong đối tượng và các PONO (các đối tượng thuần cũ thuần túy, (cũng POCO, các đối tượng CLR cũ)) có thể được sử dụng thay thế. – tobsen