向主DTO添加DTO列表
本文关键字:DTO 列表 添加 向主 | 更新日期: 2023-09-27 18:03:11
我有两个dto:
public class MasterDTO
{
public int Id { get; set; }
public string Name { get; set; }
public List<DetailDTO> Details { get; set; }
}
public class DetailDTO
{
public int Id { get; set; }
public string DetailName { get; set; }
}
还有,我有一个函数:
using (var context = new Context())
{
var r = context.MasterData
.Select(d => new MasterDTO
{
Id = d.Id,
Name = d.Name,
}
}
我也需要填写detaildto列表,并在单个请求中完成。
此时,我必须获得DetailsData数据列表,并通过foreach将其添加到MasterDTO,这当然会导致对数据库服务器的大量请求。
有更好的解决方案吗?
在数据调用中,对DetailData进行一次动态加载。例子:
var r = context.MasterData.Include("DetailData")
DetailData应该是附加到MasterData
实体的导航属性的名称。
这将导致详细数据随着MasterData
的调用被拉出。
完整的调用可能看起来像这样:
using (var context = new Context())
{
context.LazyLoadingEnabled = false;
var r = context.MasterData.Include("DetailData")
.Select(d => new MasterDTO()
{
Id = d.Id,
Name = d.Name,
Details = d.Details.Select(dt => new DetailDTO()
{
Id = dt.Id,
DetailName = dt.DetailName
})
});
}