AutoMapper从3.3.1更新到4.0.4映射失败

本文关键字:映射 失败 更新 AutoMapper | 更新日期: 2023-09-27 18:08:52

下面的代码在AutoMapper 3.3.1中可以完美地运行。

public ProductVM GetProductDetailVM(int id)
{
    try
    {
        Mapper.CreateMap<Product, ProductVM>();
        var model = this._productRep.SingleOrDefault(d => d.ProductId== id);
        ProductVM vm = Mapper.Map<Product, ProductVM>(model);
        vm.Status = this._statusRep.FirstOrDefault(d => d.StatusID == model.StatusID);
        vm.FullName = vm.ForeName + " "
                      + (string.IsNullOrEmpty(vm.MiddleName.Trim()) ? string.Empty : vm.MiddleName + " ")
                      + vm.SurName;
        return vm;
    }
    catch (Exception)
    {
        return null;
    }
}

然而,我已经决定获得最新版本的AutoMapper(4.0.4),我得到以下错误说

"缺少类型映射配置或不支持映射。' n ' nmap "

是什么导致了这个问题?

AutoMapper从3.3.1更新到4.0.4映射失败

我也遇到了同样的问题,这让我发疯了。我刚刚意识到这是从v3.3.1到v4.0.4的更新。下面的UnitTest演示了这个错误。我不知道他们引入了哪些变化但如果有一个带有IEnumerable testList参数

public class TestEntity
{
    public int Id { get; set; }
}
public class TestEntityViewModel
{
    public TestEntityViewModel()
    {
    }
    public TestEntityViewModel(IEnumerable<SelectListItem> testList)
    {
        TestList = testList;
    }
    public int Id { get; set; }
    public virtual IEnumerable<SelectListItem> TestList { get; set; }
}

[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
        Mapper.CreateMap<TestEntity, TestEntityViewModel>()
            .ForMember(m => m.TestList, opt => opt.Ignore());
        var entity = new TestEntity();
        var viewModel = Mapper.Map<TestEntityViewModel>(entity);

        Assert.IsNotNull(viewModel);
    }
}
相关文章: