与多对多关系的中间类映射

时间:2018-10-27 20:41:53

标签: c# .net-core ef-core-2.1

我正在使用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。

对此有任何想法吗?

谢谢!

0 个答案:

没有答案