【问题标题】:Model with database in MVVMMVVM 中的数据库模型
【发布时间】:2012-05-13 23:30:22
【问题描述】:

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

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

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

格言

【问题讨论】:

  • 我的回答对你有帮助吗?

标签: c# database sqlite mvvm


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    如果您想使用 SQL Server Compact Edition,您甚至可以拥有数据库 generated for you(当然这也可以使用 Sqlite 来实现,但需要付出更多努力)。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 2012-02-25
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      相关资源
      最近更新 更多