其中,上下文已被释放后的查询

本文关键字:查询 释放 上下文 其中 | 更新日期: 2023-09-27 18:20:43

我在数据层中使用这个

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?

其中,上下文已被释放后的查询

只有包装该连接的上下文才能访问该连接。您的方法返回IQueryable,因此筛选器正试图"转换"为DB查询,但基础查询提供程序已不存在。您需要在上下文仍然存在的情况下指定where条件,或者强制加载(例如,通过对result变量调用ToList()),返回IEnumerable并在内存中过滤结果。