技术设计问题:它应该在DAL、Business还是ViewModel层



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

我的实体是:

  • 类别:Id,Name
  • 费用:Id,名称,日期,类别Id

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

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

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

Q1:在我的业务层上,我的类别对象有一个";合计费用总额;字段,所以我想我会从我的业务层调用DAL,这样我就会为每个类别和特定的月份填写这个字段。在业务层上执行此操作可以吗?它真的可以被视为与业务相关吗?还是我应该将其迁移到DAL并以不同的方式设计我的数据库?

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

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

在我的观点中,根据您的用例,任何方法都可以。

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

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

最新更新