我正在更新或创建具有子关系的实体,例如聚合根是 Product (ProductId, Title),它有零个或多个 ProductSuppliers (ProductSupplierId, SuppiedAtPrice, SupplierInfoId),并且 DTO 表示类似的结构(所有信息)。很简单。
我为 ProductDTO 和 ProductSupplierDTO 创建了一个简单的映射,我猜它的工作原理是为新实体设计的。
但是,在处理 DTO 时,我可能会更新现有实体,所以我执行以下操作:
Product product = productService.GetViaProductId(productDTO.ProductId) ?? new Product();
productDTOMapper.Map(productDTO, product);
productService.Update(product);
对于 Product 上存在的原始类型,任何 ORM 都可以识别这些值是否脏。但是我不希望 Automapper 只用新集合替换 Product.Suppliers,我想在某处插入一些逻辑来迭代 product.Suppliers 并检查一个实体是否已经存在并更新它,或者创建一个新的 ProductSupplier不是一个值对象,它有一个Id,ProductSupplierId。
我找不到在映射中将其插入的位置。
有什么建议么?