Ho due classi mappate. La classe di origine ha una proprietà DateTime
associata a una proprietà di destinazione di tipo long
(DateTime.Ticks
), rispettivamente UpdateDt
e UpdateDtTicks
.La proprietà di mappatura di Automapper in modo imprevisto dal nome della proprietà parziale corrisponde a
Quando utilizzo Automapper per mappare queste due classi, la proprietà UpdateDtTicks
ottiene automaticamente il valore dalla proprietà UpdateDt
, anche se i nomi di proprietà non sono gli stessi e non ho impostato esplicitamente il mapping per questa proprietà.
Automapper sta impostando la proprietà automaticamente perché i nomi delle proprietà si differenziano solo alla fine? In caso contrario, perché questo sta accadendo in quanto è un comportamento inaspettato.
prega di consultare il codice qui sotto:
static void Main(string[] args)
{
Configuration.Configure();
var person = new OrderDto
{
OrderId = 999,
MyDate = new DateTime(2015, 1, 1, 4, 5, 6)
};
var orderModel = Mapper.Map<OrderModel>(person);
Console.WriteLine(new DateTime(orderModel.MyDateTicks.Value));
Console.ReadLine();
}
public class OrderDto
{
public int OrderId { get; set; }
public DateTime MyDate { get; set; }
}
public class OrderModel
{
public int OrderId { get; set; }
public long? MyDateTicks { get; set; }
}
public class Configuration
{
public static void Configure()
{
Mapper.CreateMap<OrderDto, OrderModel>();
}
}
Il risultato nella console:
e un orologio:
La mia ipotesi è che automapper cerca 'MyDate' nell'oggetto di destinazione, trova' 'MyDate' con zecche 'postfix, e prova se' MyDate.Ticks' ha senso. In questo caso, questa è un'espressione completamente valida. Sto cercando questa funzionalità nella documentazione, ma sembra che stia succedendo. Hai provato a rinominarlo ad esempio in "MyDateTiicks'? – MarioDS
Ho appena provato 'MyDateTiicks' e non viene mappato. Ho anche provato 'MyDatesTicks' e non viene mappato. Quindi sembra una combinazione del nome della proprietà e il fatto che 'Ticks' sono nel nome della proprietà. –