asp.net-core - 在 aspnet core 和 ef core 中使用 automapper.collection 不会更新集合中的已编辑记录
问题描述
我正在使用 asnet 样板 aspnet 核心和 ef 核心。我在 PreInitialize 中初始化了 automapper.collection,如下所示:
Configuration.Modules.AbpAutoMapper().Configurators.Add(
cfg =>{
cfg.AddCollectionMappers();
cfg.CreateMap<OrderDTO, Order>().EqualityComparison((odto, o) => odto.ID == o.ID);
cfg.CreateMap<OrderItemDTO, OrderItem>().EqualityComparison((odto, o) => odto.ID == o.ID);
}
);
我正在使用 ObjectMapper.Map(odto, o); 在 dto 和实体之间进行映射,但我发现订单中的 orderitems 集合中的新 orderitem 保存得很好,但是对现有条目的任何编辑似乎都不会更新到数据库。
使用以下命令从存储库加载订单实体和集合:
var @item = await _orderRepository.GetAll().Include(x => x.Items).Include(x => x.Items).ThenInclude(x => x.Product).AsNoTracking().FirstOrDefaultAsync(x => x.Id == id);
这是更新方法:
public override async Task<OrderDto> Update(OrderDto input)
{
var ord = await _orderManager.GetA(input.Id);
ObjectMapper.Map(input, ord);
CheckErrors(await _orderManager.UpdateA(ord));
return MapToEntityDto(await _orderManager.GetA(input.Id));
}
尝试更新 orderitem 记录时,input 和 ord 变量的值如下:
input {OrderDto}
Code "1" string
Id 1 int
Items Count = 1 System.Collections.Generic.ICollection<OrderItemDto>
- [0] {OrderItemDto}
Id 1 int
OrderId 1 int
+ Product {ProductLoadDto}
ProductId 4 int
Quantity 22 double
MovementDate {28-Jul-18 2:36:41 AM} System.DateTime
ord {[Order 1]} Order
Code "1" string
Id 1 int
Items Count = 1 System.Collections.Generic.ICollection<OrderItem>
- [0] {OrderItem 1}
Id 1 int
OrderId 1 int
+ Product {[Product 4]} Venues.Products.Product
ProductId 4 int
Quantity 1 double
MovementDate {28-Jul-18 12:06:41 PM} System.DateTime
我是否缺少让 automapper.collection 自动处理集合编辑的东西?
解决方案
您是否尝试过 Entity Framework Core 存储库?
https://github.com/AutoMapper/AutoMapper.Collection.EFCore/tree/development
推荐阅读
- python - 名称“ImageDataBunch”未定义
- powershell - 从多个文本文件的大型数据集中收集唯一项目
- java - Java菜单栏隐藏背景图片
- angular - 如果需要与另一台服务器通信,如何构建我的 webapp?
- php - 在 Ubuntu / Nginx / Visual Studio Code 中使用 xdebug 时出错
- azure-billing-api - Azure 中国计费报告 API 端点
- python-3.x - java.util.NoSuchElementException:找不到密钥:_PYSPARK_DRIVER_CALLBACK_HOST
- python - array.copy() 与 numpy.copy(array) 之间的区别
- amazon-web-services - 如何修复 API 从我的 AWS Kubernetes pod 中看到的 IP 地址
- python - 如何在 Python 中查找 .txt 文件中某一列的总和?