2012-05-13 38 views
5

Xin chào Tôi đang cố gắng tìm hiểu MVVM, và tôi không chắc chắn về một số phần, chủ yếu là phần mà Mô hình (dữ liệu) cần giao tiếp với VM (ViewModel).Mô hình với cơ sở dữ liệu trong MVVM

Vì vậy, tôi có một người lớp, nó có rất nhiều thuộc tính (với Raiseproperty (INotifyPropertyChanged)). Bây giờ làm thế nào tôi có thể kết nối lớp đó với VM Tôi sẽ tạo một lớp mới và gọi nó là ViewModelPerson, nhưng tôi chủ yếu muốn danh sách Persons, vì chỉ hiển thị 1 người là kinda vô dụng, danh sách sẽ được thu thập từ Database (SQLite)) với Dapper. Bây giờ tôi cần tạo một danh sách quan sát được ở chế độ xem hoặc mô hình (dữ liệu) ở đâu? Tôi nghĩ rằng trong ViewModel, kể từ khi tôi cần phải ràng buộc đó để xem, nhưng nơi nào tôi chèn thông tin cơ sở dữ liệu từ nó vào ViewModel ObservableCollection? Tôi đặt nó trong constructor như ViewModelPersonsList Constructor có Query để thu thập tất cả mọi người từ một SQlite DB và chèn nó vào danh sách ???

Hy vọng bạn hiểu nơi tôi không hiểu mô hình MVVM, nếu có điều gì đó không rõ ràng, chỉ cần hỏi và tôi sẽ cố gắng giải thích câu hỏi của tôi tốt hơn.

Maxim

+0

Câu trả lời của tôi có giúp ích gì cho bạn không? –

Trả lời

1

View -> Xem Người mẫu -> Business Logic -> Data Layer -> DB

HOẶC

View -> Xem Người mẫu -> Dịch vụ WCF/Web -> Business Logic - > Lớp dữ liệu -> DB

Nếu mô hình khung của bạn cần danh sách đối tượng Person, thì nó sẽ gọi lớp logic nghiệp vụ của bạn và BLL của bạn sẽ triển khai logic cần thiết xung quanh gọi lớp dữ liệu. BLL của bạn trả về danh sách, và máy ảo của bạn làm cho nó có sẵn cho khung nhìn qua ràng buộc.

Cập nhật Đối tượng người cũng hoạt động theo cùng một cách. VM chỉ gọi BLL với các đối tượng được cập nhật.

1

Vì tôi thấy bạn đã đề cập đến Sqlite, tôi cho rằng bạn đang nói về các dự án WPF nhỏ.

Tôi khuyên bạn nên tạo mô hình mã đầu tiên của khung thực thể được ánh xạ tới cơ sở dữ liệu của bạn (đọc this).

Nếu bạn muốn sử dụng SQL Server Compact Edition, bạn thậm chí có thể có cơ sở dữ liệu generated for you (điều này cũng có thể đạt được với Sqlite) nhưng với nhiều nỗ lực hơn).

Dù sao, sau đó bạn sử dụng (hoặc được mã hóa) DbContext được tạo (làm đối tượng UoW).

Bạn có thể chọn xử lý dữ liệu của mình riêng biệt thông qua DAL hoặc trực tiếp từ ViewModel.

Bất kỳ trường hợp nào, tôi sẽ nói tạo hai lớp cơ sở ViewModel, một lớp hiển thị TEntity và lớp còn lại trưng ra bộ sưu tập TEntity. Nếu bạn chọn thực hiện các hành động DAL trong máy ảo của mình, bạn có thể thêm các phương thức CRUD vào cơ sở CollectionViewModel và gọi thủ công hoặc cho phép người dùng gọi nó bằng cách hiển thị các lệnh.

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