![](/img/trans.png)
[英]How to retrieve an entity with related entities in .net core with raw SQL queries?
[英]How to retrieve entities with a subset of related entities?
我有一對多關系中的兩個實體:儀表(1)->(n)閱讀
我相信我的兩個實體已正確設置以提供該關系,因此假設這一點。
我希望檢索具有相關讀數的儀表,但是由於每個儀表可能有很多讀數,因此我希望通過例如Reading.Date來限制它。 另一個選擇是每米最多讀取X個讀數。
如何在EF.Core中做到這一點?
我認為錯過的另一個答案是,您要的是相關實體的子集 ,而不是相關實體的整個集合。
如果要對提取的相關實體保持選擇性,則不能僅依靠Include
語句(或隱式延遲加載),因為它們被設置為加載所有相關實體。
沒有選擇性的Include
。 但是您可以Select
一個包容性的Select
:
DateTime filterDate = DateTime.Now;
var myData = db.Meters
.Select(m => new
{
Meter = m,
Readings = m.Readings.Where(r => r.Date == filterDate)
})
.ToList();
備注
Where(r => r.Date == filterDate)
可以改進(檢查Date
組件或范圍),這只是一個簡單的示例。 您可以在此處使用所需的任何過濾條件。 Include
語句。 Select
(在尚未枚舉的IQueryable
)不需要顯式的Include
因為Select
本身已經知道您要獲取的數據。 meter.Readings
。 這將導致對於此列表是子集還是完整集的困惑,當您調用SaceChanges()
時,EF實際上可能會將其注冊為更改。 Nav道具不應用作具有相同類型但功能含義不同的收藏存儲空間。 如果您的表設計正確,即Meter中的鍵已與Reading映射(請參閱外鍵約束),則EF在訪問其POCO類時會自動提供相關記錄。 確保讀數具有數據庫中儀表表的外鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.