gpt4 book ai didi

c# - AutoMapper 从 3.3.1 更新到 4.0.4 映射失败

转载 作者:行者123 更新时间:2023-11-30 16:52:49 35 4
gpt4 key购买 nike

以下代码在 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\n映射”

是什么导致了这个问题?

最佳答案

我也遇到了同样的问题,把我逼疯了。我刚刚意识到这是从 v3.3.1 到 v4.0.4 的更新。以下 UnitTest 说明了该错误。我不知道他们引入了哪些更改,但如果存在带有 IEnumerable < SelectListItem > 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);
}
}

关于c# - AutoMapper 从 3.3.1 更新到 4.0.4 映射失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32121942/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com