我正在使用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。
对此有任何想法吗?
谢谢!