在我的项目中,我有一个服务层,它从控制器接收对象,将其转换为 DTO 并将其发送到存储库。我猜的问题是,对于我项目中的每个实体类,我都需要一个具有完全相同实体属性的 DTO。让我展示一些代码:
public class PersonDto
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
};
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
};
public class PersonController : Controller
{
public ActionResult Create(CreatePersonViewModel createPersonViewModel)
{
var personDto = //here I map createPersonViewModel to a PersonDto
_personCreateService.Create(personDto);
}
}
public class PersonCreateService
{
public void Create(PersonDto personDto)
{
_repository.Create(personDto);
}
}
public class PersonRepository
{
public void Create(PersonDto personDto)
{
Person person = PersonMapper.Map(personDto);
_db.Person.Add(person);
}
}
所以,我对此有一些疑问:
- 它是一个好的架构吗?
- 我应该将 dto 映射到服务中的实体还是仅在存储库中?
- 让我的 dto 等于我的实体有什么问题吗?
- 正如许多教程所教的那样,我不直接在我的控制器中使用 dbContext 是不是很愚蠢?