Automapper sagt, Mapper.Map ist veraltet, globale Zuordnungen?
Ich hatte in meinem Projekt eine globale Automapper-Konfiguration definiert, mit der ich @ verwenden kanMapper.Map<targetType>(sourceObject);
in meinem Code. (Siehe meine Konfiguration unten.)
Ich habe das NuGet-Paket aktualisiert und sehe die Meldung, dass Mapper.Map veraltet / veraltet ist. Ich bin auf GitHub zu Automapper zurückgekehrt und habe Beispiele wie dieses gesehen:
[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");
}
uss ich in JEDER Methode eine Konfiguration erstellen, die ein Mapping verwende
Meine aktuelle globale Konfiguration:
namespace PublicationSystem.App_Start
{
public class AutoMapperConfig
{
public static void CreateMaps()
{
CreateProjectMaps();
}
private static void CreateProjectMaps()
{
Mapper.CreateMap<Project, ProjectCreate>();
Mapper.CreateMap<Project, ProjectSelectable>();
//...
}
}
}
AKTUALISIEREN Dank einigem Coaching von Scott Chamberlain habe ich eine Klasse wie diese geschaffen:
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
}
}
Ich denke, ich sollte die 'MapperConfiguration' in meiner BaseController-Klasse haben. Ich habe angefangen, so etwas zu machen:
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;
}
}
Bin ich auf dem richtigen Weg?