1
的Visual Studio生成對於我這個偉大航路,在那裏我可以加載一個實體:實體框架貪婪加載網頁API路線
// GET: api/Jobs/5
[ResponseType(typeof(Job))]
public async Task<IHttpActionResult> GetJob(int id)
{
Job job = await db.Jobs.FindAsync(id);
if (job == null)
{
return NotFound();
}
return Ok(job);
}
這裏的Job
模型,這是基於:
public class Job
{
public Job()
{
this.Regions = new List<Region>();
this.Files = new List<JobFile>();
}
public int ID { get; set; }
public string Name { get; set; }
public List<Region> Regions { get; set; }
public JobTypes JobType { get; set; }
public int UserIDCreatedBy { get; set; }
public int? UserIDAssignedTo { get; set; }
public List<JobFile> Files { get; set; }
public bool IsLocked { get; set; } // Lock for modification access
}
這裏的在JobFile
類,它Job
■找的列表:
public class JobFile
{
public int ID { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public int Job_ID { get; set; }
}
和Pdf
的JobFile
一個子類:
public class Pdf : JobFile
{
public Pdf()
{
this.PdfPages = new List<PdfPage>();
}
public int Index { get; set; }
public List<PdfPage> PdfPages { get; set; }
}
現在,當我打的路線,我想急切地加載所有的Pdf
■對於Job
。我正在努力如何使用Linq編寫該查詢,特別是在繼承這裏的子類的情況下。我需要在路由替換該行:
Job job = await db.Jobs.FindAsync(id);
我有一個開始吧,我認爲:
// Eager load all the properties
IQueryable<Pdf> jobPdfs = (IQueryable<Pdf>)db.JobFiles.Where(jobFile => jobFile.Job_ID == id && jobFile is Pdf);
這應該讓我所有的Pdf
的I認爲。但我也想加載PdfPages
的Pdf
s。我如何修改此聲明以包含該聲明?要做的事情似乎是使用.Include(pdf => pdf.PdfPages)
,
我認爲我們有這個[解決](HTTP:// codereview.stackexchange.com/a/119699/7251)? –