我有两个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中,这当然会导致对数据库服务器的大量请求。
有没有更好的解决办法?
发布于 2013-03-09 15:14:24
在您的数据调用中,对您的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
})
});
}https://stackoverflow.com/questions/15312031
复制相似问题