[英]Selecting rows in a DBSet with Entity Framework
我試圖獲取基於DbSet
對象中的WHERE
子句的行。 我有這個:
dbContext.Workers
我可以獲得這樣的列表:
workers = m.Workers.Where(w => w.BranchId == curUser.BranchId).ToList<Worker>();
但是正如您所看到的,它返回一個List<Worker>
,我不能將它與workers.Find(WorkerId)
一起使用。
基本上,我試圖基於某個過濾器返回一個DBSet
,這意味着我想在DBSet類上使用LINQ。 我想要這個,因為我需要使用workers.Find(WorkerId)
也許我也需要更新此模型。 因此,我將獲得一個基於where子句的列表,我將更改一些值並使用dbContext.SaveChanges()
。 那可能嗎?
謝謝
Where(...)返回一個IQueryable,您可以在查詢運行之前對其進行操作。 ToList()將強制執行查詢並將對象放入內存。 如果要在查詢后“查找”項目,則可以對列表執行以下操作:
workers.SingleOrDerfault(x => x.WorkerId == WorkerId);
如果將它們全部存儲在內存中並進行更改,則可以通過調用.SaveChanges()來保留這些更改。
但是,如果在查詢命中數據庫之前需要對IQueryable進行更多過濾,則需要在調用ToList()之前操縱IQueryable。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.