首页 > 解决方案 > 技术设计问题:应该在 DAL、Business 还是 ViewModel 层?

问题描述

我正在开发一个简单的费用跟踪器应用程序,按类别组织,在 C# 和实体框架中。

我的实体是:

我正在使用 MVVM 并分离关注点:我有一个业务层、一个数据访问层和一个视图/视图模型层。

我想在我的第一页上显示一个类别列表,其中包含特定月份在每个类别上花费的总金额。

我应该在哪里整合每个类别的这些金额的计算?

Q1:在我的业务层上,我的类别对象有一个“SummedExpensesAmount”字段,所以我想我会从我的业务层调用 DAL,以便为每个类别和特定月份填写此字段。在业务层做这个操作可以吗?它实际上可以被认为与业务相关还是我应该将其迁移到 DAL 并以不同的方式设计我的数据库?

第二种方法:我是否应该在 DAL on Business 上有类似的对象,并在 ViewModel 层上进行所有排序,这意味着让业务方法返回特定类别和期间的总金额,循环调用它并填充自定义类别视图模型。

每种方法的优缺点是什么?

标签: entity-frameworkdesign-patternsmvvmdatabase-designdata-access-layer

解决方案


认为,根据您的用例,任何方法都可以。

  1. 如果您在 SQL 查询本身中计算总计,最好的方法是将其放入 DAL。
  2. 如果您从数据库中获取原始数据并应用一些业务逻辑,那么 BLL 是更好的选择。
  3. 如果您没有应用任何业务逻辑并且它只是一个表示逻辑来添加数字并且您的 UI 框架可以更好地处理这个问题,那么 UI 层(可能是 ViewModel)也可以。

我将个人丢弃上面的第 3 点。我将根据我是否在 SQL Query 中计算总计来做出决定。基于此,我将从上面选择1或2。


推荐阅读