0

我在我的数据层中使用它

public static IQueryable<Permission> ListAll()
{
    using (InventorySystemEntities context = new InventorySystemEntities(new ConfigurationManager().ConnectionString))
    {
        IQueryable<Permission> result = context.Permissions;
        return result;
    }
}

它应该将所有行放在结果变量中。但是做这样的事情,它会导致上下文已经被处理..

permissionList = PermissionModel.ListAll();
chkListGeneral.DataSource = permissionList.Where(p => p.Parent == "General");

有没有办法在没有上下文的情况下过滤 IQueryable?

4

1 回答 1

0

只有在包装它的上下文中才能访问连接。您的方法返回IQueryable,因此过滤器正在尝试“转换”为数据库查询,但底层查询提供程序不再存在。您要么需要在上下文仍然存在时指定 where 条件,要么强制预先加载(例如通过调用ToList()变量result),返回IEnumerable并过滤内存中的结果。

于 2013-07-02T19:51:14.513 回答