使用实体框架

时间:2015-08-31 16:42:15

标签: c# asp.net linq entity-framework

我正在尝试根据WHERE对象中的DbSet子句获取行。我有这个:

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()。这可能吗?

由于

1 个答案:

答案 0 :(得分:5)

其中(...)返回IQueryable,您可以在查询运行之前进行操作。 ToList()将强制执行查询并将对象放入内存。如果你想找到&#39;查询之后的项目,您可以使用列表执行类似的操作:

workers.SingleOrDerfault(x => x.WorkerId == WorkerId);

如果你把它们都放在这样的内存中并进行更改,那么你将通过调用.SaveChanges()来保持这些更改。

但是,如果您需要在查询到达数据库之前对IQueryable应用更多过滤,那么您将要在调用ToList()之前操作IQueryable。