Я определил в своем проекте глобальную конфигурацию Automapper, которая позволила бы мне использовать Mapper.Map<targetType>(sourceObject);
в моем коде. (См. Мою конфигурацию ниже.)Automapper говорит, что Mapper.Map устарел, глобальные сопоставления?
Я обновил пакет NuGet и вижу сообщение о том, что Mapper.Map устарел/обесценен. Я вернулся к Automapper на GitHub и посмотреть примеры, как это:
[Test]
public void Example()
{
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<Source1, SubDest1>().FixRootDest();
cfg.CreateMap<Source2, SubDest2>().FixRootDest();
});
config.AssertConfigurationIsValid();
var mapper = config.CreateMapper();
var subDest1 = mapper.Map<Source1, SubDest1>(new Source1 {SomeValue = "Value1"});
var subDest2 = mapper.Map<Source2, SubDest2>(new Source2 {SomeOtherValue = "Value2"});
subDest1.SomeValue.ShouldEqual("Value1");
subDest2.SomeOtherValue.ShouldEqual("Value2");
}
Я собираюсь иметь, чтобы создать конфигурацию в каждом методе, который использует отображение?
Моя текущая глобальная конфигурация:
namespace PublicationSystem.App_Start
{
public class AutoMapperConfig
{
public static void CreateMaps()
{
CreateProjectMaps();
}
private static void CreateProjectMaps()
{
Mapper.CreateMap<Project, ProjectCreate>();
Mapper.CreateMap<Project, ProjectSelectable>();
//...
}
}
}
UPDATE: Благодаря некоторым коучинга Скотта Чемберлен я создал класс, как это:
public class MkpMapperProfile : AutoMapper.Profile
{
protected override void Configure()
{
this.CreateMap<Project, ProjectCreate>();
this.CreateMap<Project, ProjectSelectable>();
this.CreateMap<Project, ProjectDetails>();
// Many Many other maps
}
}
Я думаю, что я должен есть «MapperConfiguration» в моем классе BaseController. Я начал делать что-то вроде этого:
public partial class BaseController : Controller
{
private MapperConfiguration mapConfig;
public BaseController()
{
db = new MkpContext();
SetMapperConfig();
}
private void SetMapperConfig()
{
mapConfig = new MapperConfiguration(cfg =>
{
cfg.AddProfile<MkpMapperProfile>();
});
}
public BaseController(MapperConfiguration config)
{
db = new MkpContext();
this.mapConfig = config;
}
}
Я нахожусь на правильном пути?
Automapper удаляется от статических функций, охватываемых глобальными областями. Это позволяет библиотекам, написанным разными авторами, использовать AutoMapper, не мешая друг другу. –
Я не уверен, что это значит для меня. Я получаю информацию и здесь, но это не дает мне полной картины. Я читал это: https://github.com/AutoMapper/AutoMapper/wiki/Migrating-from-static-API, но это не имеет смысла. Нужно ли определять конфигурацию в КАЖДОЙ ActionResult, которая использует AutoMapper? Я мог бы переместить его в datalayer ... И у моего приложения, похоже, нет 'MvcApplication.MapperConfiguration'. Где это определено? –
Вы делаете это, в основном создаете класс, который происходит из 'Profile', переопределяет функцию' Configure() ', а затем вставляет в' CreateProjectMaps', а заменяет 'Mapper.'' this.' –