Sono nuovo di AutoMapper e, a meno che non sia frainteso, AutoMapper dovrebbe sempre creare copie profonde quando si esegue il mapping su un Dto. Tuttavia, il seguente codice di test mi sta dimostrando che sta creando copie poco profonde. Cosa mi manca qui?Perché AutoMapper sta creando copie poco profonde?
Mapping Config
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using AutoMapper;
using Sandbox.Models;
namespace Sandbox.Core.Automapper
{
public static class AutoMapperWebConfiguration
{
public static void Configure()
{
ConfigureUserMapping();
}
private static void ConfigureUserMapping()
{
Mapper.CreateMap<Home, HomeDto>();
}
}
}
modello e Setup Dto
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Sandbox.Models
{
public class Home
{
public int Price { get; set; }
public int Price2 { get; set; }
public MyStuff Stuff{ get; set; }
}
public class HomeDto
{
public int Price { get; set; }
public int Price2 { get; set; }
public MyStuff Stuff{ get; set; }
}
public class MyStuff
{
public int Abba { get; set; }
}
}
codice di prova
var home = new Home();
home.Stuff= new MyStuff(){Abba = 1};
var homeDto = Mapper.Map<HomeDto>(home);
homeDto.MyStuff.Abba = 33;
Dopo modi fying homeDa valore di Abba a 33, il valore di Abba di casa cambia anche a 33. Ho configurato male qualcosa? Cosa devo fare per risolvere questo problema?
possibile duplicato di [Automapper restituisce il riferimento allo stesso oggetto durante il mapping delle sequenze agli array] (http://stackoverflow.com/questions/28874357/automapper-returns-reference-to-the-same-object-when-mapping -sequences-to-array) –
Si prega di notare che il tag [tag: model-view-controller] è inteso per domande sul * modello *. La tua domanda riguarda l'implementazione specifica di ASP.NET, quindi usa [tag: asp.net-mvc]. –
in base al post del blog fornito da @DavidHall soluzione a ciò che stai chiedendo è di aggiungere "Mapper.CreateMap();" come più di configurazione. Ma il comportamento che hai trovato nell'auto-mapper è piuttosto interessante e importante da notare. –
Prashant