EF dbContext IQueryable方法依赖项不起作用

时间:2012-10-31 10:54:12

标签: asp.net-mvc entity-framework

我试图像我这样添加一些帮助方法到我的dbContext类

public IQueryable<Tool> GetAllToolsInCompanyGroup(string userName)
{
    var user = GetUserByName(userName);
    return Tools.Where(t => Companies.Any(c => user.Company.CompanyGroupId == c.CompanyGroupId && c.Id == t.CompanyId));
}

但如果我从我的控制器那里调用它,我会得到这个例外:

Unable to create a constant value of type 'myNamespace.Models.Company'. Only primitive types or enumeration types are supported in this context.

如果我在我的控制器中执行完全相同的操作:

db.Tools.Where(t => db.Companies.Any(c => user.Company.CompanyGroupId == c.CompanyGroupId && c.Id == t.CompanyId))

它有效。我做错了什么?

2 个答案:

答案 0 :(得分:0)

您的Tool类是实体类还是DbContext类?因为我猜你正在返回“工具”(你以前的方法中的实体类,这就是它抛出异常的原因

答案 1 :(得分:0)

我通过使用这样的一些连接来解决它:

var user = GetUserByName(userName);
var tools = from t in Tools
            join u in Users on t.CompanyId equals u.CompanyId
            join c in Companies on u.Company.CompanyGroupId equals c.CompanyGroup.Id
            select t;