从 AutoMapper 7.x 升级到 8.x 时,出现了一些重大变化。
以下是一些可能会影响到您升级过程中的问题:
在 AutoMapper 7.x 中:
Mapper.Initialize(cfg => {
cfg.CreateMap();
});
var models = new List();
var dtos = Mapper.Map>(models); // works fine
在 AutoMapper 8.x 中:
var config = new MapperConfiguration(cfg => {
cfg.CreateMap();
});
var mapper = config.CreateMapper();
var models = new List();
var dtos = mapper.Map>(models); // throws exception
您可以使用以下方式解决这个问题:
var config = new MapperConfiguration(cfg => {
cfg.CreateMap();
});
var mapper = config.CreateMapper();
var models = new List();
var dtos = mapper.Map>(models, opts => opts.ToList()); // works fine
请注意,选项是必需的。
在 AutoMapper 7.x 中:
Mapper.Initialize(cfg => {
cfg.CreateMap();
});
var models = new List();
var dtos = Mapper.Map>(models); // works fine
在 AutoMapper 8.x 中:
var config = new MapperConfiguration(cfg => {
cfg.CreateMap();
});
var mapper = config.CreateMapper();
var models = new List();
var dtos = mapper.Map>(models); // throws exception
在 AutoMapper 8.x 中,您必须使用 CollectionMapper 对象:
var config = new MapperConfiguration(cfg => {
cfg.CreateMap();
});
var mapper = config.CreateMapper();
var models = new List();
var dtos = mapper.Map, IEnumerable>(models, opts => opts.UseDestinationValue());
请注意,选项是必需的。