0

我对 AutoMapper 有一个奇怪的问题。

如果我执行以下操作

//Get my entities from EF repository
var movements = _movementRepository.AllIncluding(movement => movement.Asset, movement => movement.Job,movement => movement.Asset.MinorEquipmentType);
var model = new List<AssetMovementDetail>();
foreach (var assetMovementDetail in movements)
{
     model.Add(Mapper.Map<AssetMovementDetail>(assetMovementDetail));
}

如果我期望的话,这可以完美地工作并给我结果。

如果或者我更改要生成的模型,例如:

var model = Mapper.Map<List<AssetMovementDetail>>(movements);

结果不同,结果总数相同,但许多结果彼此重复,而其他结果则缺失。难道我做错了什么?这不是它应该如何工作的吗。

4

1 回答 1

1

您需要将列表映射到列表,而不是自动从一个列表中获取映射......因此出现意外的行为。要了解我的意思,请查看此帖子:使用 Automapper 映射列表

编辑

也许您有与那里回答的相同问题?AutoMapper map 中的 foreach 中的额外迭代。请看一下,也许它可以解决,或者给你一些想法?

它也可能与您初始 linq 语句中的延迟(延迟)加载有关。

编辑 2

这是我自己的项目中的代码,它成功地完成了您尝试做的事情:

var dbResources = _db.GetResourcesForBusiness();
var vmResources = Mapper.Map<IEnumerable<DBResource>, IEnumerable<VMResource>>(dbResources);

与您使用的相比,它的一次拍摄交易格式有点不同,尝试使用它,看看它是否适合您。

希望这可以帮助!

于 2012-09-27T13:36:24.967 回答