如何使用Automapper映射集合
本文关键字:集合 映射 Automapper 何使用 | 更新日期: 2023-09-27 18:10:51
我有以下类
public class StateDto
{
public int Id { get; set; }
public string StateName { get; set; }
public string StateCode { get; set; }
}
public class CountryDto
{
public int Id { get; set; }
public string CountryName { get; set; }
public string CountryCode { get; set; }
public List<StateDto> States { get; set; }
}
public class Country : Entity, IValidatableObject
{
public Country()
{
States=new List<State>();
}
public string CountryName { get; set; }
public string CountryCode { get; set; }
// Few code related to IvalidatableObject removed
public virtual ICollection<State> States { get; private set; }
public void AddNewStatesInCountry(State state)
{
state.CountryId = Id;
States.Add(state);
}
public bool IsDuplicateStateCodeExisits(string stateCode)
{
return States.Any(s => s.StateCode == stateCode);
}
}
public class State : Entity, IValidatableObject
{
public string StateName { get; set; }
public string StateCode { get; set; }
public int CountryId { get; set; }
// Few code related to IvalidatableObject removed
}
,我使用下面的代码
映射这两个类 Mapper.CreateMap<State, StateDto>();
Mapper.CreateMap<Country, CountryDto>(); // Mapping Country to CountryDto
但我得到这个错误,而执行我的代码
AutoMapper.AutoMapperMappingException : Missing type map configuration or unsupported mapping.
Mapping types:
Country -> CountryDto
Domain.ErpBase.CountryAgg.Country -> Application.ErpBase.Dto.CountryDto
Destination path:
CountryDto
Source value:
Domain.ErpBase.CountryAgg.Country
我的映射出了什么问题,如何解决这个问题?
类中的映射集合是否需要任何特殊设置?注:我尝试了countryMap。记住(cm => cm)。州,mc => mc.MapFrom (co => co.States));
我认为您只定义了一个从Country到CountryDto的映射。你可能也需要一个相反的
Automapper
自动处理集合,所以您的映射定义很好。
但是,您应该在Country
中为States
提供一个公共设置器。