C# 一种类型的属性映射到另一种类型的实例
我使用automapper来映射视图模型和实体模型,一切都很好,但现在我有了一个稍微不同的场景,automapper无法映射我的类型 我的视图模型:C# 一种类型的属性映射到另一种类型的实例,c#,automapper,C#,Automapper,我使用automapper来映射视图模型和实体模型,一切都很好,但现在我有了一个稍微不同的场景,automapper无法映射我的类型 我的视图模型: public class CriminalSearchViewModel { public CriminalSearchParamsViewModel SearchParameters { get; set; } public SelectList GenderSelectList { get; set; }
public class CriminalSearchViewModel
{
public CriminalSearchParamsViewModel SearchParameters { get; set; }
public SelectList GenderSelectList { get; set; }
public SelectList NationalitySelectList { get; set; }
public SelectList CrimeSelectList { get; set; }
public SelectList CriminalStatusSelectList { get; set; }
}
第二视图模型:
public class CriminalSearchParamsViewModel
{
[Required]
public string FirstName { get; set; }
public string LastName { get; set; }
public int? GenderID { get; set; }
public int? StatusID { get; set; }
public string CNIC { get; set; }
public int? AgeFrom { get; set; }
public int? AgeTo { get; set; }
public double? Height { get; set; }
public int Weight { get; set; }
public int? NationalityID { get; set; }
}
我的商业模式是:
public class CriminalSearch
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int? GenderID { get; set; }
public int? StatusID { get; set; }
public string CNIC { get; set; }
public int? AgeFrom { get; set; }
public int? AgeTo { get; set; }
public double? Height { get; set; }
public int Weight { get; set; }
public int? NationalityID { get; set; }
}
我定义了如下映射:
Mapper.CreateMap<CriminalSearch, CriminalSearchParamsViewModel>();
Mapper.CreateMap();
我也试过这个:
Mapper.CreateMap<CriminalSearchParamsViewModel,CriminalSearchViewModel>()
.ForMember(dest => dest.SearchParameters, opt =>
opt.MapFrom(src => Mapper.Map<CriminalSearchParamsViewModel, CriminalSearch>(src)));
Mapper.CreateMap()
.ForMember(dest=>dest.SearchParameters,opt=>
opt.MapFrom(src=>Mapper.Map(src));
在控制器中,我尝试如下:
public ActionResult Search(CriminalSearchViewModel searchVM)
{
if (ModelState.IsValid)
{
var searchParams = searchVM.SearchParameters;
var criminalSearch = AutoMapper.Mapper.Map<CriminalSearch>(searchParams);
_criminalService.SearchCriminals(criminalSearch);
}
return View();
}
公共行动结果搜索(CriminalSearchViewModel searchVM)
{
if(ModelState.IsValid)
{
var searchParams=searchVM.SearchParameters;
var criminalSearch=AutoMapper.Mapper.Map(searchParams);
_刑事搜查罪犯(刑事搜查);
}
返回视图();
}
但它总是抛出异常:
缺少类型映射配置或不支持的映射
映射类型:
刑事搜索参数视图模型->刑事搜索
NationalCriminals.UI.ViewModels.CriminalSearchParamsViewModel->NationalCriminalCriminals.Core.Models.CriminalSearch
目标路径:
刑事搜查
源值:
NationalCriminals.UI.ViewModels.CriminalSearchParamsViewModel
有人能告诉我出了什么问题吗?您只需要更改方法
CreateMap
中泛型参数的顺序:
Mapper.CreateMap<CriminalSearchParamsViewModel,CriminalSearch>()
建议:
Mapper.CreateMap<CriminalSearchParamsViewModel,CriminalSearch>()
Mapper.CreateMap<CriminalSearch,CriminalSearchParamsViewModel>()
AutoMapper.Mapper.CreateMap<SourceClass, DestinationClass>();