Я использую Automapper для сопоставления двух классов.
Моя проблема возникает в следующей ситуации:
Я использую EF Core, и у меня есть отношения многие ко многим, поэтому мне нужно создатьпромежуточный класс, чтобы создать эти отношения.Мои сущности следующие:
public class DogEntity
{
public DogEntity()
{
this.DogOwner = new List<DogOwner>();
}
public virtual ICollection<DogOwner> DogOwners{ get; set; }
}
public class OwnerEntity
{
public OwnerEntity()
{
this.DogOwner = new List<DogOwner>();
}
public virtual ICollection<DogOwner> DogOwners{ get; set; }
}
public class DogOwner
{
public int DogId { get; set; }
public DogEntity Dog {get ; set; }
public int OwnerId { get; set; }
public OwnerEntity Owner {get ; set; }
}
В основном у собаки много владельцев, а у владельца много собак.Поскольку я не хочу, чтобы мой домен зависел от базы данных, мой домен выглядит следующим образом:
public class Dog
{
public Dog()
{
this.Owners = new List<Owner>();
}
public virtual ICollection<Owner> Owners{ get; set; }
}
public class Owner
{
public Owner()
{
this.Dogs = new List<Dog>();
}
public virtual ICollection<Dog> Dogs{ get; set; }
}
Мне нужна карта между Dog и DogEntity, а также Owner и OwnerEntity.Поэтому мне нужно сопоставить Dog с DogEntity, и для этого мне нужно что-то вроде:
CreateMap<Dog, DogEntity>().ForMember(de => de.DogOwners, x => x.MapFrom(d => d.Owners.Select(o => new DogOwner() {OwnerId = o.Id, DogId = d.Id})));
Но это создает мне 2 разных класса DogEntity, один с OwnerId, а другой с DogId.
Есть идеи по этому поводу?
Спасибо!