第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將多個模型組合成 1 個 JSON WebAPI 響應(yīng)

將多個模型組合成 1 個 JSON WebAPI 響應(yīng)

C#
慕桂英3389331 2021-11-21 10:58:14
我在這里工作有點倒退,并嘗試從提供的用于前端的 JSON 示例創(chuàng)建一個 web api。這是 JSON 格式。 {"Sections": [{     "sectionID":"1",     "sectionOrder":1,     "sectionName":"Approach",     "sectionText": "",     "sectionContent": [{         "contentID": "1",         "contentTitle": "Definition",         "contentText": "Lorem Ipsum",         "contentImage": ""     },     {         "contentID": "2",         "contentTitle": "Vision",         "contentText": "Lorem Ipsum",         "contentImage": "image2.jpg"     }]}]}我創(chuàng)建了 2 個表(由 SectionContentID 鏈接的部分和部分內(nèi)容)并使用實體框架將這些表添加為模型。然后我創(chuàng)建了一個控制器來返回部分表,但現(xiàn)在我陷入了如何將部分內(nèi)容數(shù)據(jù)連接到 1 個 JSON 響應(yīng)的問題。我的控制器看起來像這樣:public IQueryable<Sections> GetSections(){    //how do I add db.SectionsContent to Sections linked by the sectionContentID field?    return db.Sections;}
查看完整描述

2 回答

?
嚕嚕噠

TA貢獻1784條經(jīng)驗 獲得超7個贊

我將從定義 DTO 對象開始,因為直接返回數(shù)據(jù)庫對象不是最佳實踐,您通常不希望重新查看所有字段,它還為您在不破壞 API 合同的情況下更改數(shù)據(jù)庫結(jié)構(gòu)提供了更大的靈活性。此外,您需要將您的集合包裝在 Sections 屬性中,因此您不能只返回對象列表。所以,你需要這樣的結(jié)構(gòu):


public class SectionsResponse

{

    public List<SectionDTO> Sections {get;set;}

}


public class SectionDTO

{

    public string SectionID {get;set;}

    .... add other properties

    public List<ContentDTO> sectionContent {get;set;}

}


public class ContentDTO

{

   ... define your properties

}

下一步將是實現(xiàn)數(shù)據(jù)庫對象和 DTO 之間的映射。為此,您可以使用現(xiàn)有的庫,例如AutoMapper


至于使用數(shù)據(jù)庫,您可以應(yīng)用從實體框架急切加載。簡而言之,它看起來像:


return db.Sections.Include(x => x.Content);

或者用 DTO 和 AutoMapper 包裹:


return new SectionsResponse() { Sections = mapper.Map<List<Section>, List<SectionDTO>>(db.Sections.Include(x => x.Content)) };



查看完整回答
反對 回復(fù) 2021-11-21
?
明月笑刀無情

TA貢獻1828條經(jīng)驗 獲得超4個贊

如果您使用的是實體框架 (EF) 并且您的表關(guān)系類型是一對多,您可以在 lambda 表達式中使用Include來返回帶有第二個表數(shù)據(jù)的第一個表。


return context.Entity1st.Include(x => x.Entity2nd);

或者你也可以這樣做:


var entities = context.Entity1st;


foreach (var entity in entities)

{

    entity.Entity2nd = context.Entity2nd.Where(x => x.Entity1stId == entity.Id);

}


return entities;


查看完整回答
反對 回復(fù) 2021-11-21
  • 2 回答
  • 0 關(guān)注
  • 225 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號