使用实体框架在DBSet中选择行
本文关键字:选择 DBSet 实体 框架 | 更新日期: 2023-09-27 18:10:38
我试图根据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()将强制执行查询并将对象放入内存中。如果你想在查询后"找到"一个项目,那么你可以用List做这样的事情:
workers.SingleOrDerfault(x => x.WorkerId == WorkerId);
如果你像这样在内存中拥有它们,并且做了更改,那么你将通过调用。savechanges()来持久化这些更改。
然而,如果你需要在查询到达数据库之前对IQueryable应用更多的过滤,那么你就需要在调用ToList()之前对IQueryable进行操作。