簡體   English   中英

如何使用原始 SQL 查詢在 .net core 中檢索具有相關實體的實體?

[英]How to retrieve an entity with related entities in .net core with raw SQL queries?

我有以下模型, Visit.csPrescription.cs 我想獲取包含相關處方的每個實例的所有訪問行。 我使用以下 EF Core 查詢,但medicines字段始終為空。 我使用 postgresql 作為數據庫。 我該怎么辦?

訪問.cs:

public class Visit
{
    public int patient_id { get; set; }
    public DateTime visit_date { get; set; }
    public int doctor_id { get; set; }
    public int prescription_id { get; set; }

    public ICollection<Prescription> prescriptions { get; set; }
}

處方.cs:

public class Prescription
{
    public int prescription_id { get; set; }
    public string medicine { get; set; }
    public Visit Visit { get; set; }
}

和我的查詢:

var visits = dbContext.Visits
                      .FromSqlRaw("select * from visit natural join prescription")
                      .ToList();

.FromSqlRaw文檔限制部分提到了這一點

他們確實通過組合原始查詢提供了如何包含相關數據的示例:

var visits = dbContext.Visits
  .FromSqlRaw("select * from visit")
  .Include(v=>v.prescriptions)
  .ToList();

我還強烈建議您不要在任何查詢中使用 *。 列出您需要返回的列。 使用 * 將導致數據庫返回所有列,甚至是您不想要的列。 強制數據庫返回未使用的列可能會導致它不使用它本來可以使用的索引,或者導致數據庫執行它確實不需要執行的行查找。 一個很好的例子是 DBA 為 CreateDate、UpdateDate、CreateUser、UpdateUser 和/或 RowVersion 之類的內容添加列,以幫助進行更改跟蹤或復制。

暫無
暫無

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

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