我在我的資料庫中保存一個物件,它存盤與存盤在另一個表中的物件相關的 ID。當我從資料庫中檢索它時,我想將這個類的詳細資訊連同相關物件的名稱一起回傳給客戶端。IE,
抗真菌劑
ID: 1
Name: "Drug1"
互動藥物
ID: 1
Name: "Drug2"
相互作用
ID: 1
AntifungalID: 1
InteractingDrugID: 1
當我從我的控制器檢索互動資料時,它ID回傳與該互動藥物的所有互動。IDinteractingDrug
[HttpGet("{id}")]
public async Task<ActionResult<List<DrugInteractions>>> getInteraction(int id)
{
return await _context.DrugInteractions
.Include(di => di.InteractingDrug)
.Include(di => di.AntifungalAgent)
.Where(di => di.InteractingDrug.ID == id)
.ToListAsync();
}
目前,我按預期獲得了所有互動的串列。但我只得到了antifungalAgentID和 的數字InteractingDrugID。
我也想知道這兩種藥物的名稱。
我創建了一個DrugInteractionDto類。
public class DrugInteractionDTO
{
public string Antifungal { get; set; }
public string InteractingDrug { get; set; }
public string BasicDetailedInformation { get; set; }
public string ProDetailedInformation { get; set; }
public Severity Severity { get; set; }
public int ID { get; set; }
}
但是我堅持將antifungalAgentand的名稱添加interactingDrug到這個 DTO,以便我可以將它回傳給客戶端并在 UI 中使用這些名稱。
uj5u.com熱心網友回復:
根據您提供的資料,是和DrugInteraction表之間的關聯表。AntifungalAgentInteractingDrug
AntifungalAgent (1..m) --> DrugInteraction (m..1) <-- InteractingDrug
生成的DrugInteraction物體類應如下所示:
public class DrugInteraction
{
public int ID { get; set; }
public int AntifungalAgentID { get; set; }
public int InteractingDrugID { get; set; }
public virtual AntifungalAgent AntifungalAgent { get; set; }
public virtual InteractingDrug InteractingDrug { get; set; }
}
您需要將.Select()每個物件從型別轉換DrugInteractions為DrugInteractionDTO型別。
public async Task<ActionResult<List<DrugInteractionDTO>>> getInteraction(int id)
{
return await _context.DrugInteractions
.Include(di => di.InteractingDrug)
.Include(di => di.AntifungalAgent)
.Where(di => di.InteractingDrug.ID == id)
.Select(x => new DrugInteractionDTO
{
Antifungal = x.AntifungalAgent.Name,
InteractingDrug = x.InteractingDrug.Name,
ID = x.ID,
// Following properties
})
.ToListAsync();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/515626.html
上一篇:通過Linq進行分組和求和
