【发布时间】:2021-06-15 22:38:54
【问题描述】:
我正在使用 ASP.NET Core WebAPI,我想为我的名为“Item”的对象执行 CRUD。 我正在使用 EF Core 处理 SQL 数据库,并且我有两个代表我的对象的模型。
- ItemDto - 项目的数据传输对象
- ItemEntity - 数据库对象(表示表格中的一行 1:1)
我的 HTTP GET one 和 HTTP GET many 方法以这样的方式工作
-
获取 ItemRepository 实例
-
获取一个或多个ItemEntity
-
使用 AutoMapper 将其映射到 ItemDto 这是在我的构造函数中初始化的,例如
m_itemDtoMapper = new Mapper(new MapperConfiguration(cfg => cfg.CreateMap<ItemEntity, ItemDto>()));
在我的 WebAPI 方法中,我使用以下行将它映射到 ItemDto(对于 GET 很多情况):
var itemDtos = m_itemDtoMapper.Map<IEnumerable<ItemEntity>, ICollection<ItemDto>>(items);
这很好用,而且 AutoMapper 非常强大。我现在的问题是:
- 这是管理数据库实体和数据传输对象之间关系的标准方法吗?
- 在 CreateItem 方法中,我需要做反向映射。我需要将 ItemDto 映射到 ItemEntity,而不是将 ItemEntity 映射到 ItemDto。我该怎么做?仅使用切换实体创建我的映射器的副本是可行的,但它应该如何完成?即两个映射器。
【问题讨论】:
-
不要使用m_作为前缀,C#下划线就够了:)
标签: c# asp.net-core asp.net-web-api .net-core automapper