要求将名称(A类)和电话号码(B类)映射到具有Name和PhoneNumber的C类。一个人(姓名)可以有多个电话号码。
public class A
{
public int ID { get; set; }
public string Name { get; set; }
public virtual IList<B> B { get; set; }
}
public class B
{
public int A_ID { get; set; }
public string PhoneNumber { get; set; }
}
public class C
{
public string Name { get; set; }
public string PhoneNumber { get; set; }
}
从数据库中获取一个类(具有B)详细信息,并且需要将其映射到C类。
public class Activity
{
public IList<C> GetContacts(string name)
{
using (ModelEntities ctx = new ModelEntities())
{
Mapper.CreateMap<A, C>();
Mapper.CreateMap<B, C>();
var result =
ctx.A.SingleOrDefault(ss => ss.Name == name);
}
}
}
任何人都可以帮助我使用Automapper进行地图制作吗?
由于
答案 0 :(得分:1)
AutoMapper无法从单个实例映射到多个实例。它必须是实例实例或可枚举为可枚举。我能看到的最佳前进方法是简单地将IList<B>
映射到IList<C>
,然后重新填充Name
属性。有点像:
var c = Mapper.Map<IList<C>>(a.B);
c.ToList().ForEach(m => m.Name = a.Name);
但是,除非你的映射比这更复杂,否则AutoMapper是过度的。你可以这样做:
var c = a.B.Select(b => new C { Name = a.Name, PhoneNumber = b.PhoneNumber });