使用MVP-VM设计模式的数据库中的数据

时间:2015-05-01 16:42:06

标签: c# design-patterns mvvm mvp

为了了解MVP-VM设计模式以准备使用DevExpress的新项目,我无法找到数据库示例的示例。

查看DevExpress,我无法找到具有此设计模式的示例。

所以,我的问题是,有没有这种设计模式经验的人,如果你对DevExpress有更好的经验,可以给我一个数据库连接的例子,从数据库映射数据(查询/表)建模并将数据保存到数据库中?

我理解这听起来可能是一个基本问题,但我不知道这种模式从视图中获取数据到数据库的最佳做法是什么,反之亦然。因此,我不想做错了。

由于

1 个答案:

答案 0 :(得分:0)

经典架构定义了以下部分:

DAL(数据访问层):处理数据库操作,不包含业务逻辑。 BLL(业务逻辑层):处理业务逻辑和约束,但没有数据库操作。 PL(表示层):处理演示和用户交互。

MVP / MVVM仅处理PL。最大的问题是,这种模式中的M(odel)究竟是什么。一个示例是使用Entity Framework或DevExpress XPO将对象映射到数据库。但是这个对象是什么?他们是虚拟机吗?它们是模型吗?或者他们只是Dal的简单Dtos?如果查看以前的定义,最后一个定义将是最匹配的定义。但这意味着您必须将此dtos映射到模型对象(逻辑所在的位置)和vms(数据绑定发生的位置)或首先映射到模型,然后从第二步映射到vms?那个数据网格的过滤/排序/分页功能怎么样呢?只有你直接访问dal才有效?

在我看来,这三个方面的真正分离只能通过CQRS或类似的架构来实现。至少我不知道其他人。但这仅适用于具有大量业务逻辑的极端复杂应用程序,并且需要很多开销和权衡。

因此,对于您的应用,您必须决定哪些障碍可以满足您的需求并避免项目的不必要的复杂性。一个简单的CRUD应用程序可以使用Entity Framework / XPO,并将这些对象直接用作VM进行数据绑定。你根本没有bll。如果它变得越来越复杂,你可能会朝着cqrs的方向走一点。您可以定义视图并直接使用EF / XPO及其对象进行数据绑定,但是对于复杂的操作,您可以创建一个bll(域)模型,其中包含执行该操作的对象(加载了EF / XPO)(之后需要重新加载vms) )。如果它更复杂,你可以通过事件采购和DDD建模来完整地使用CQRS。

相关问题