Dire che ho un modello di dati, che assomiglia a questo:
public class DataCustomer
{
public virtual System.DateTime CreatedTime { get; set; }
public virtual Guid Id { get; set; }
public virtual string FirstName { get; set; }
public virtual string Surname { get; set; }
public virtual string FaxNumber{ get; set; }
public virtual System.DateTime DateOfBirth { get; set; }
public virtual String Gender { get; set; }
public virtual string UserID { get; set; }
public virtual List<Offers> Offers { get; set; }
}
Questa classe è mappata a NHibernate. Ora dì che ho un modello di dominio come questo:
public class DomainCustomer
{
private virtual Guid Id { get; set; }
private virtual String Gender { get; set; }
private virtual DateTime DateOfBirth { get; set; }
public virtual List<Offers> Offers { get; set; }
public DomainCustomer(Guid id, string gender, DateTime dateOfBirth)
{
Id=id;
Gender=gender;
DateOfBirth=dateOfBirth;
}
public void AssignOffers(IOfferCalculator offerCalculator, IList<Offers> offers)
{
//Assign the offers here
}
}
Si noti che il modello di dati ha un aspetto diverso rispetto al modello di dominio. Credo che questa sia una pratica normale, tuttavia ogni esempio che guardo online sembra mostrare che il modello di dati è lo stesso del modello di dominio.
Opzione 1
Il vantaggio di essere identici è che la mappatura tra il modello di dominio e il modello di dati è molto semplice, cioè puoi farlo con AutoMapper:
DataCustomer dataCustomer = AutoMapper.Mapper.Map<DataCustomer>(domainCustomer);
Opzione 2
Il vantaggio di essere diversi è che ci sono meno dati tra il modello di dati e il modello di dominio e viceversa. Inoltre, penso che ciò rende leggermente più chiaro, ad esempio, un utente / lettore della mia classe sa quali campi sono necessari per il modello di dominio. Con questo approccio; Vorrei solo mappare i membri che hanno cambiato le offerte:
customerData.Offers = AutoMapper.Mapper.Map<string>(customerDomain.Offers);
decisione
Entrambe le opzioni utilizzano una fabbrica durante il mapping tra CustomerData e CustomerDomain. La domanda riguarda la mappatura tra CustomerDomain e CustomerData utilizzando AutoMapper.
Quale opzione è più probabile se seguo il principio del minimo stupore?