Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 技术设计问题:应该在DAL层、业务层还是ViewModel层?_Entity Framework_Design Patterns_Mvvm_Database Design_Data Access Layer - Fatal编程技术网

Entity framework 技术设计问题:应该在DAL层、业务层还是ViewModel层?

Entity framework 技术设计问题:应该在DAL层、业务层还是ViewModel层?,entity-framework,design-patterns,mvvm,database-design,data-access-layer,Entity Framework,Design Patterns,Mvvm,Database Design,Data Access Layer,我正在开发一个简单的费用跟踪应用程序,按类别组织,采用C#和实体框架 我的实体是: 类别:身份证、姓名 费用:Id、姓名、日期、类别Id 我正在使用MVVM,并将关注点分开:我有一个业务层、一个数据访问层和一个视图/视图模型层 我想在我的第一页上显示一个类别列表,其中包含特定月份每个类别的总花费 我应该在哪里整合每个类别的这些金额的计算 Q1:在我的业务层上,我的类别对象有一个“SummedExpensesAmount”字段,所以我想我会从我的业务层调用DAL,以便为每个类别和特定月份填充该

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

我的实体是:

  • 类别:身份证、姓名
  • 费用:Id、姓名、日期、类别Id
我正在使用MVVM,并将关注点分开:我有一个业务层、一个数据访问层和一个视图/视图模型层

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

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

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

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


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

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

  • 若要在SQL查询本身中计算总计,最好的方法是将其放入DAL中
  • 若您从数据库获取原始数据并应用一些业务逻辑,那个么BLL是更好的选择
  • 如果您没有应用任何业务逻辑,它只是一个表示逻辑来添加数字,并且您的UI框架能够更好地处理这个问题,那么UI层(ViewModel可能是)也可以
  • 我个人将放弃上述第3点。我将根据是否在SQL查询中计算总计来做出决定。基于此,我将从上面选择1或2