【问题标题】:Technical design problem: should it be in DAL, Business, or ViewModel layer?技术设计问题:应该在 DAL、Business 还是 ViewModel 层?
【发布时间】:2020-06-01 16:21:09
【问题描述】:

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

我的实体是:

  • 类别:ID、名称
  • 费用:Id、姓名、日期、CategoryId

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

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

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

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

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

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

【问题讨论】:

    标签: entity-framework design-patterns mvvm database-design data-access-layer


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-01-27
      • 2010-10-09
      • 2020-09-01
      • 2010-10-11
      • 1970-01-01
      • 2011-05-27
      • 2011-12-04
      • 1970-01-01
      • 2011-02-01
      相关资源
      最近更新 更多