我试图像我这样添加一些帮助方法到我的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))
它有效。我做错了什么?
答案 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;