gpt4 book ai didi

c# - AutoMapper 将 2 个表中的记录连接到单个 IEnumerable View 模型中

转载 作者:太空狗 更新时间:2023-10-29 23:29:09 25 4
gpt4 key购买 nike

我有 2 个表,比如 T1T2T1 包含 oID,cID,date,statusT2 包含 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 是引用 T2 - cID外键

现在我有了如下所示的 T3 View 模型来组合 T1T2

T3.cs

public class T3:T1
{
public int cID{get;set;}
public string cName{get;set;}
public string cURL{get;set;}
}

T3 扩展 T1T2 属性在 T3 中定义。因此,我打算使用 AutoMapper 将 2 个表合并到一个 View 模型中。我有以下方法从 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 个表实际映射数据。知道如何实现这一点吗?

最佳答案

我想你可以尝试这样的事情:

var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<T1, T3>();
cfg.CreateMap<T2, T3>();
});

var mapper = config.CreateMapper();

var od = new List<T1> { ... };
var ck = new List<T2> { ... };

var result = od.Join(ck, t => t.cID, t => t.cID, (t1, t2) =>
{
var t3 = mapper.Map<T1, T3>(t1);
t3 = mapper.Map<T2, T3>(t2, t3);

return t3;
});

关于c# - AutoMapper 将 2 个表中的记录连接到单个 IEnumerable View 模型中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41368164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com