6

您好我正在尝试学习 MVVM,但我对某些部分不太确定,主要是(数据)模型需要与 VM(ViewModel)通信的部分。

所以我得到了一个类人,它有很多属性(使用 Raiseproperty(INotifyPropertyChanged))。现在如何将该类连接到 VM 我将创建一个新类并将其命名为 ViewModelPerson,但我主要想要一个人员列表,因为只显示一个人有点没用,该列表将从数据库中收集(SQLite ) 与 Dapper。现在我需要在哪里创建一个可观察的列表,在视图模型中还是在(数据)模型中?我认为在 ViewModel 中,因为我需要将它绑定到 View,但是我在哪里将数据库信息从它插入到 ViewModel ObservableCollection 中?我是否将它放在像 ViewModelPersonsList 构造函数这样的构造函数中,该构造函数有一个查询来从 SQlite 数据库中收集所有人员并将其插入到列表中???

希望您了解我在哪里无法理解 MVVM 模型,如果有不清楚的地方请尽管问,我会尝试更好地解释我的问题。

格言

4

2 回答 2

2

视图 -> 视图模型 -> 业务逻辑 -> 数据层 -> 数据库

或者

视图 -> 视图模型 -> WCF/Web 服务 -> 业务逻辑 -> 数据层 -> 数据库

如果您的视图模型需要一个 Person 对象列表,那么它应该调用您的业务逻辑层,并且您的 BLL 将围绕调用数据层实现必要的逻辑。您的 BLL 返回列表,您的 VM 通过绑定使其可用于视图。

更新Person 对象的工作方式相同。VM 只是使用更新的对象调用 BLL。

于 2012-05-14T00:13:53.860 回答
1

既然我看到你提到了 Sqlite,我假设你在谈论小型 WPF 项目。

我建议您将实体框架代码优先模型映射到您的数据库(阅读内容)。

如果您想使用 SQL Server Compact Edition,您甚至可以为您生成数据库(这也可以使用 Sqlite 来实现,但需要付出更多努力)。

无论如何,然后您将生成的(或编码的)DbContext用作UoW对象。

您可以选择通过 DAL 或直接从 ViewModel 单独处理数据。

无论如何,我会说创建两个 ViewModel 基类,一个公开 TEntity,另一个公开 TEntity 的集合。如果您选择在您的 VM 中执行 DAL 操作,您可以将 CRUD 方法添加到您的基础 CollectionViewModel 中,然后手动调用或让用户通过公开命令来调用它。

于 2012-05-14T00:35:37.880 回答