gpt4 book ai didi

wpf - 涉及在 ViewModel 或 Model 中处理数据(来自 DB)的逻辑?

转载 作者:行者123 更新时间:2023-12-03 10:14:20 25 4
gpt4 key购买 nike

我正在使用 WPF 开发应用程序。我使用的模式显然是 MVVM。此外,我正在使用 Entity Framework ORM 和 LINQ-to-Entities 来查询 EF 对象。

我对 MVVM 的理解是 View 不应该有代码隐藏,它应该拥有的 ViewModel 的唯一知识是 ViewModel 包含与 View 绑定(bind)的某些属性,并且它还包含处理 View 事件的命令。而模型只包含从数据库获取数据的代码。

在我的模型类中,我刚刚编写了使用 Linq-to-entities 直接查询 EF 对象的函数。在将数据分配给 VM 中的属性之前,我需要对数据执行的处理要么存在于 VM 中,要么存在于 VM 项目中的类中。在这里提一下,我有 3 个项目 - View、ViewModel 和 Model。

我的问题是,我可以将这些功能(涉及处理来自数据库的数据)保留在 VM 项目中还是应该保留在 Model 项目中?如果在 ViewModel 项目中,它应该在相关 VM 中还是在 VM 项目中存在的单独类中?

最佳答案

一种常用的做法是将业务逻辑委托(delegate)给服务层,并使用存储库模式执行业务逻辑。正如其他答案中提到的,ViewModel 应该使用处理 UI 交互的 View 特定属性和命令来装饰模型。根据它自己的定义,模型应该具有操作数据的所有逻辑。

如果您遵循面向服务的体系结构,则可以向 ViewModel 注入(inject)服务。该服务负责执行业务功能。这些业务功能大多是在持久化数据上完成的。并且可以使用任何 ORM 工具和技术(如 EF 或 NHibernate)很好地抽象该逻辑。您可以在 Google 上搜索 Repository Pattern,如果您遵循此架构,这会很有帮助。

如果您不需要它,则不必使用存储库模式。您仍然可以直接从您的服务层使用 EF。拥有存储库的优势在于它充当持久层(数据库)和域层(模型)之间的映射器。

希望这可以帮助。

关于wpf - 涉及在 ViewModel 或 Model 中处理数据(来自 DB)的逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6138032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com