簡體   English   中英

在帶有實體框架的DBSet中選擇行

[英]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.

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