Сопоставление многих со многими отношениями промежуточного класса - PullRequest
0 голосов
/ 27 октября 2018

Я использую 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.

Есть идеи по этому поводу?

Спасибо!

...