我想通過 .NET Core Entity Framework Core 構建我的 API。
我非常熟悉 Sequelize ORM (javascript),您可以完全控制自定義查詢。
即想象一個資料模型,其中你有學校,每所學校都有很多學生。
有時我只想查詢學校(更快),有時我想查詢有學生的學校(更慢)。
因此,我在 Sequelize 服務器上使用 axios 客戶端:
// including students (slower)
this.$axios.$get('/api/school',{ params : { where: { Country: 'US' }, include: [{ model: 'Student' }] } })
// not including students (faster)
this.$axios.$get('/api/school',{ params : { where: { Country: 'US' } })
但是我找不到用 axios 和 .NET Core 做類似事情的方法
有誰知道或可以指向一些檔案的鏈接來管理 Entity Framework Core .NET Core API 中的客戶端可選包含?
uj5u.com熱心網友回復:
如果您使用 EF 查詢物體,您可以定義要在查詢中包含哪些子物件,如下所示:
context.DbSet<School>().Include(s => s.Students).ToList();
為了在您的端點中進行這項作業,它變成了這樣:
public IActionResult Get(string country, string[] includes)
{
var query = _context.DbSet<School>();
foreach (var include in includes)
{
query = query.Include(include);
}
return query.ToList();
}
盡管實際上并不建議允許客戶端定義要包含的內容。如果有與學校相關聯的財務資料,并且客戶也包括在內怎么辦?!你當然不想要那個!
我建議創建一個單獨的端點,并在 API 中查詢包含,而不是在客戶端執行,如下所示:
[HttpGet("school")]
public IActionResult Get(string country)
{
return Ok(_context.DbSet<School>().ToList());
}
[HttpGet("schoolWithStudents")]
public IActionResult Get(string country)
{
return Ok(_context.DbSet<School>().Include(s => s.Students).ToList());
}
為簡潔起見,忽略對國家/地區的過濾。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/525793.html
標籤:C#asp.net 核心axios实体框架核心asp.net-core-webapi
下一篇:如何從應用程式中訪問配置選項?