0

我试图像这样向我的 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))

有用。我究竟做错了什么?

4

2 回答 2

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;
于 2012-11-02T09:07:23.307 回答
0

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

于 2012-10-31T11:15:29.887 回答