【发布时间】:2016-12-28 19:00:27
【问题描述】:
我有 2 张桌子,比如 T1 和 T2。 T1 包含 oID,cID,date,status,T2 包含 cID,cName,cURL。我为以上 2 个表设计了类,如下所示:
T1.cs
public class T1{
public int oID{get;set;}
public int cID{get;set;}
public DateTime date{get;set;}
public string status{get;set;}
}
T2.cs
public class T2{
public int cID{get;set;}
public string cName{get;set;}
public string cURL{get;set;}
}
T1 中的cID 是foreign key,指的是T2 - cID
现在我的T3 视图模型如下组合T1 和T2
T3.cs
public class T3:T1
{
public int cID{get;set;}
public string cName{get;set;}
public string cURL{get;set;}
}
T3 扩展 T1 和 T2 属性在 T3 中定义。因此,我打算使用 AutoMapper 在单个视图模型中组合 2 个表。我有以下方法从T1 获取所有详细信息,从T2 获取相关详细信息,填充后将返回IEnumerable T3。
public IEnumerable<T3> GetAll()
{
var od = mycontext.t1repository.GetMany().ToList();
var ck = myContext.t2repository.GetMany(x => od.All(y => y.cID == x.cID)).ToList();
if (od.Any())
{
Mapper.CreateMap<tblT1, T3>();
Mapper.CreateMap<tblT2, T3>()
.ForMember(x=>x.cID, a => a.MapFrom(s => s.cID))
var response = Mapper.Map<List<T1>, List<T3>>(od);
return response;
}
return null;
}
我通过 this answer 尝试了上述代码,但这是针对单个实例的,我必须返回 IEnumerable 的记录。我不确定如何根据 cID 实际映射 2 个表中的数据。知道如何实现这一目标吗?
【问题讨论】:
-
是否需要在 T3 中使用父级 (T1) 的字段?
-
@MegaTron 是的。我需要显示来自
T1的数据及其来自T2的相关数据,并将它们合并到T3
标签: c# automapper