- une librairie DAL EntityFramework 6 Code First avec Fluent API
- une librairie métiers.
Je suis donc amené à convertir mes objets EF en objets de ma classe métiers.
Mes objets sont representés par les classes TableA et TableB dans ma librairie d'accès aux données. Leur équivalent respectif dans ma librairie métier sont ClasseMétierA et ClasseMétierB.
Mes classes EF :
public class TableA
{
public int id { get; set; }
public virtual TableB TableB { get; set; }
}
public class TableB
{
public TableB()
{
TableAList = new List<TableA>();
}
public int id { get; set; }
public virtual List<TableA> TableAList { get; set; }
}
Mes classes métiers :
public class ClasseMetierA
{
private int id;
public ClasseMetierB TableB;
}
public class ClassMetierB
{
public ClassMetierB()
{
TableAList = new List<ClasseMetierA>();
}
private int id;
public List<ClasseMetierA> TableAList { get; set; }
}
Ce que je souhaite faire :
Je veux pouvoir passer d'un objet "TableB" à un objet "ClasseMetierB".
Pour ca j'utilise AutoMapper au travers d'une interface :
// Interface de conversion entre les objets de la couche donnée (suffixe DAO) et les objets de la couche métier (suffixe BO)
public interface IConvertisseur<D,B>
where D : class
where B : class
{
B ConvertDTB(D obj);
D ConvertBTD(B obj);
}
Implémenter dans une classe :
public class Convertisseur<D, B> : IConvertisseur<D, B> where D : class where B : class
{
private MapperConfiguration mapperConfig;
private Mapper mapper;
/// <summary>
/// Initialise la configuration du mapper pour toutes les tables BO et DAO
/// </summary>
public Convertisseur()
{
try
{
mapperConfig = new MapperConfiguration(cfg =>
{
cfg.CreateMap<TableA, ClasseMetierA>().MaxDepth(3);
cfg.CreateMap<TableB, ClasseMetierB>().MaxDepth(3);
});
mapperConfig.AssertConfigurationIsValid();
}
catch (Exception ex)
{
throw ex;
}
}
public B ConvertDTB(D obj)
{
var mapper = mapperConfig.CreateMapper();
return mapper.Map<B>(obj);
}
public D ConvertBTD(B obj)
{
var mapper = mapperConfig.CreateMapper();
return mapper.Map<D>(obj);
}
}
Dans l'objet oTableB, ma collection TableAList contient 2 élement de type TableA.
Après conversion, dans l'objet oClasseMetierB, mon attribut ClasseMetierAList présente bien 2 élément de type ClasseMetierA, mais tous les attributs de ces deux éléments sont null, alors que dans oTableB, l'équivalent de ces élements contient des valeurs..
Après quelques heures de recherche, j'ai essayé avec l'option de configuration suivante :
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.