使用 MVP-VM 设计模式从数据库获取数据
Data from Database Using MVP-VM Design Pattern
为了理解 MVP-VM 设计模式以准备使用 DevExpress 的新项目,我无法找到包含数据库示例的示例。
查看 DevExpress,我无法找到使用此设计模式的示例。
所以,我的问题是,有没有人有这种设计模式的经验,如果你有 DevExpress 的经验更好,可以给我一个数据库连接的例子,从数据库映射数据(query/table) 建模,并将数据保存到数据库?
我很欣赏这听起来可能是一个基本问题,但我不知道使用此模式将数据从视图持久保存到数据库的最佳实践是什么,反之亦然。所以,我不想再做错事了。
谢谢
经典架构定义了以下部分:
DAL(数据访问层):处理数据库操作,不包含业务逻辑。
BLL(业务逻辑层):处理业务逻辑和约束,但不处理数据库操作。
PL(表示层):处理表示和用户交互。
MVP/MVVM 仅处理 PL。最大的问题是,这个模式中的 M(model) 到底是什么。一个示例是使用 Entity Framework 或 DevExpress XPO 将对象映射到数据库。但是这些对象是什么?他们是虚拟机吗?他们是模特吗?或者它们只是 Dal 的简单 Dto?如果您查看前面的定义,最后一个将是最匹配的。但这意味着您必须将此 dto 映射到您的模型对象(逻辑所在的位置)和您的 vms(发生数据绑定的位置),或者首先映射到您的模型,然后再从那里映射到您的 vms?数据网格的 filtering/sorting/paging 功能怎么样,只有当你让它直接访问你的 dal 时才有效?
在我看来,这三个方面的真正分离只能通过 CQRS 或类似的架构来实现。至少我不知道其他人。但这仅适用于具有大量业务逻辑并带来大量开销和权衡的极端复杂应用程序。
因此,对于您的应用,您必须决定要打破哪些障碍以满足您的需求并避免项目不必要的复杂性。一个简单的 CRUD 应用程序可以使用 Entity Framework/XPO 并将对象直接用作 VM 进行数据绑定。你根本就没有bll。如果它变得更复杂,你可能会朝着 cqrs 的方向前进一点。您定义视图并直接使用 EF/XPO 及其对象进行数据绑定,但是对于复杂的操作,您创建一个 bll(域)模型,其中包含执行这些操作(需要使用 EF/XPO 加载的对象)之后重新加载你的虚拟机)。如果它更复杂,您可以通过事件溯源和 DDD 建模来完成 CQRS。
为了理解 MVP-VM 设计模式以准备使用 DevExpress 的新项目,我无法找到包含数据库示例的示例。
查看 DevExpress,我无法找到使用此设计模式的示例。
所以,我的问题是,有没有人有这种设计模式的经验,如果你有 DevExpress 的经验更好,可以给我一个数据库连接的例子,从数据库映射数据(query/table) 建模,并将数据保存到数据库?
我很欣赏这听起来可能是一个基本问题,但我不知道使用此模式将数据从视图持久保存到数据库的最佳实践是什么,反之亦然。所以,我不想再做错事了。
谢谢
经典架构定义了以下部分:
DAL(数据访问层):处理数据库操作,不包含业务逻辑。 BLL(业务逻辑层):处理业务逻辑和约束,但不处理数据库操作。 PL(表示层):处理表示和用户交互。
MVP/MVVM 仅处理 PL。最大的问题是,这个模式中的 M(model) 到底是什么。一个示例是使用 Entity Framework 或 DevExpress XPO 将对象映射到数据库。但是这些对象是什么?他们是虚拟机吗?他们是模特吗?或者它们只是 Dal 的简单 Dto?如果您查看前面的定义,最后一个将是最匹配的。但这意味着您必须将此 dto 映射到您的模型对象(逻辑所在的位置)和您的 vms(发生数据绑定的位置),或者首先映射到您的模型,然后再从那里映射到您的 vms?数据网格的 filtering/sorting/paging 功能怎么样,只有当你让它直接访问你的 dal 时才有效?
在我看来,这三个方面的真正分离只能通过 CQRS 或类似的架构来实现。至少我不知道其他人。但这仅适用于具有大量业务逻辑并带来大量开销和权衡的极端复杂应用程序。
因此,对于您的应用,您必须决定要打破哪些障碍以满足您的需求并避免项目不必要的复杂性。一个简单的 CRUD 应用程序可以使用 Entity Framework/XPO 并将对象直接用作 VM 进行数据绑定。你根本就没有bll。如果它变得更复杂,你可能会朝着 cqrs 的方向前进一点。您定义视图并直接使用 EF/XPO 及其对象进行数据绑定,但是对于复杂的操作,您创建一个 bll(域)模型,其中包含执行这些操作(需要使用 EF/XPO 加载的对象)之后重新加载你的虚拟机)。如果它更复杂,您可以通过事件溯源和 DDD 建模来完成 CQRS。