我正在开发一个数据库应用程序,该应用程序管理特定于行业的输入,然后通过一些复杂的计算、查找等运行该信息,以返回一系列其他值和一个通过/不通过的结论。
我决定使用实体框架(代码优先用于提供程序独立性)和 WPF(MVVM 模式)。我使用 POCO 实体作为我的数据模型,而视图模型正在处理诸如基本数据/业务规则验证之类的常规操作。
似乎 EF + WPF/MVVM 非常擅长显示和验证输入并将其输入数据库以查询您的典型业务应用程序,例如产品、客户、订单设置。但根本不清楚在哪里插入“计算层”。在视图模型和数据模型(我的 POCO)之间,事情已经有点臃肿了,现在我正面临着添加另一个层,就像其他两个层一样。
也许解决这个问题的最好方法是使计算层成为一种元视图模型,并将尽可能多的验证、更改通知等推送到它们中,并使用更轻的实际视图模型运行。
有人遇到过这样的情况吗?
编辑
事实证明,我真正需要的是精简视图模型并增强实体。所以我减轻了视图模型,将属性更改通知和基本验证移至实体以允许直接绑定,并使计算类直接使用实体以及向实体添加一些基本例程。感谢思想 ADM 文章 @Peter Porfy 的链接。
为了使验证更接近实体,使用了Fluent Validation(极好的建议@Gloopy!)。为了更容易在实体上实现属性更改通知,采用了这种技术。为了避免在视图模型中创建无穷无尽的属性包装器(设置 HasChanges 属性),我使用了Josh Smith 的 PropertyObserver。