【发布时间】:2020-02-19 23:31:21
【问题描述】:
我使用 EntityFramework 作为我的 DAL,例如我有实体:
public class UserEntity
{
public int WorkingDays {get;set;}
}
我通过存储库在我的服务层中获取此实体,这就是我需要计算的地方,例如他的薪水:
public ???? GetUserWithPayments(int id)
{
var userEntity = _userRepository.GetUser(id);
var payPerDieValue = _paymentService.GetValue();
var salary = userEntity.WorkingDays * payPerDieValue;
//*what should i return??*//
}
现在我不知道我应该从这个方法返回什么?我看到 2 个选项:
1.) 将薪水字段添加到 UserEntity,并返回 UserEntity。当我将 UserEntity 保存到数据库时,该字段将被跳过。
2.) 使用 UserEntity 字段和另外一个 Salary 创建 UserDto
此服务由 UserController 调用,结果将映射到 GetUserDetailsViewModel
【问题讨论】:
-
是的,创建一个 DTO/ViewModel。保持实体模型干净(单一职责)。
-
@SteveGreene,我在控制器中获得了 ViewModel。所以存储库应该返回 UserEntity,然后在服务中我应该返回 UserDTO,然后从控制器 UserViewModel。所以我应该有3层模型对吗?每层都有自己的数据模型?
标签: c# asp.net entity-framework design-patterns architecture