【问题标题】:MVVM - Model Tutorials?MVVM - 模型教程?
【发布时间】:2011-03-27 21:38:28
【问题描述】:

我目前正在用 C# 创建一个 WPF 应用程序,并且一直在关注这个 diagram 。我已经阅读了几篇关于 MVVM 的文章,但我专门寻找虚线框下方所有内容的详细信息(因此模型和数据访问)。我已经有一个本地数据库设置 (SQLite),我正在寻找一种将它连接到我的应用程序的有效方法。

有没有为 MVVM 创建这个特定部分的好文章或演示?

【问题讨论】:

  • 您是否出于某种原因删除了我已经回答的有关该主题的问题?
  • @Martin:我只是想改写一下,专注于MVVM的使用
  • 当一个问题措辞不佳时,一种常见的方法是“编辑”它,而不是删除它并重新发布。

标签: c# .net wpf sqlite mvvm


【解决方案1】:

有很多方法可以解决这个问题,您选择哪一种将取决于您的应用程序和数据模型的复杂性。

从 .NET 的角度来看,解决此问题的标准方法是在 SQLite 数据库之上创建一个实体框架模型。这将生成您的对象模型,并允许您将行为附加到它而不会大惊小怪。它还从您的应用程序代码(ViewModels)中抽象出数据库/持久性。有关此方法的详细信息,请在 Google 中搜索“实体框架”——那里有大量信息。自 EF 4.0 发布以来,EF 有了显着改进。

如果您不想使用 EF(由于复杂性、开销或只是想自己动手),那么您将需要阅读流行的数据源架构模式。从 Martin Fowler 的 Patterns of Enterprise Application Architecture 开始——这本书是数据驱动应用程序架构的圣经。如果您不想买这本书,请仔细阅读模式说明,找到合适的并进行 Google 搜索 - 网络上有大量关于这些内容的信息。

如果您有一个包含大量行为和模式的复杂模型,那么您需要查看模型的 Domain Model 模式,以及可能将数据从数据库中取出并输入的 Data Mapper 数据源模式你的模型。这是最复杂的方法,但如果您需要,复杂性会在以后的灵活性中得到回报。

如果您的数据模型更简单,那么您可能希望使用Table Data GatewayRow Data Gateway 进行数据访问,并可能使用Transaction ScriptService Layer 进行模型和数据库之间的通信。

对于用链接轰炸您的行为,我深表歉意,但现实情况是,在决定应用程序的架构时,进行大量研究非常重要,最重要的是学习和依赖已知的解决方案。祝你好运。

【讨论】:

  • 我很欣赏这些链接,尽管我认为关于问题的级别,即教程。最简单的模型是最好的,然后他可以从那里开始构建。
【解决方案2】:

链接到的图表比 MVVM 复杂一点。 MVVM 仅指 Model、View 和 ViewModel。它将数据访问策略留给程序员。

我使用 MVVM,但我不喜欢我的模型类包含从数据访问层加载数据的逻辑(事实上,我不喜欢模型类包含除了通过 INotifyPropertyChanged 更新通知之外的任何编程逻辑) .

我目前使用的模式有一个名为 Repository 的附加包。 ViewModel 调用 Repository 告诉它获取数据。然后,存储库从数据库(或 Web 服务或文件系统等)获取数据并填充模型对象。 ViewModel 正在观察 Model 对象,因此更改会传播到 UI。

【讨论】:

  • 是的,这看起来很有条理。你知道我在哪里可以找到使用这种模式的 Good 教程吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-11
  • 2017-08-27
  • 2018-11-29
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
相关资源
最近更新 更多