我在AutoMapperConfig.cs
文件夹的App_Start
中使用了以下代码。一世
在Global.asax
中将其初始化为AutoMapperConfiguration.Configure()
但是我无法使用Mapper.Map<Hospital, MongoHospital>
控制器。它抛出的异常是没有定义映射。它
曾在以前版本的Automapper中工作过
Mapper.CreateMap<>
方法。我很困惑如何使用
MapperConfiguration
实例。
public static class AutoMapperConfiguration
{
public static void Configure()
{
Mapper.Initialize(
cfg =>
{
cfg.AddProfile<HospitalProfile>();
}
);
Mapper.AssertConfigurationIsValid();
}
}
public class HospitalProfile : Profile
{
protected override void Configure()
{
var config = new MapperConfiguration(
cfg =>
{
cfg.CreateMap<Hospital, MongoHospital>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id.ToString()));
});
config.CreateMapper();
}
}
尝试按以下方式访问此地图
Mapper.Map<IEnumerable<Hospital>, IEnumerable<MongoHospital>>(hospitalsOnDB);
答案 0 :(得分:3)
在这种情况下,您真的需要使用配置文件吗?如果你不这样做,你可以尝试像这样初始化Mapper:
public static class AutoMapperConfiguration
{
public static void Configure()
{
Mapper.Initialize(
config =>
{
config.CreateMap<Hospital, MongoHospital>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id.ToString()));
});
}
}
但是,如果您仍想注册个人资料,可以这样做:
public static class AutoMapperConfiguration
{
public static void Configure()
{
Mapper.Initialize(
cfg =>
{
cfg.AddProfile<HospitalProfile>();
}
);
}
}
public class HospitalProfile : Profile
{
protected override void Configure()
{
CreateMap<Hospital, MongoHospital>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id.ToString()));
}
}
希望这会有所帮助。如果您正在使用AutoMapper 5.0,请记住此时此时仍处于测试阶段。
答案 1 :(得分:1)
您可以在AutoMapper 5.2中使用它。
您的个人资料类如下
public class MapperProfile: Profile
{
public MapperProfile()
{
CreateMap<Hospital, MongoHospital>().ReverseMap();
}
}
然后在你的Global.asax
中 protected void Application_Start()
{
//Rest of the code
Mapper.Initialize(c => c.AddProfiles(new string[] { "DLL NAME OF YOUR PROFILE CLASS" }));
}
现在需要创建实例
AutoMapper.Mapper.Instance.Map<MongoHospital, Hospital>(source, new Hospital());
希望这有帮助。