簡體   English   中英

將DTO列表添加到主DTO

[英]Add a list of DTOs to the master DTO

我有兩個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
            })
        });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM