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クラスですか?「Tools」(以前のメソッドのエンティティクラス)を返していると思います。そのため、例外がスローされます。

于 2012-10-31T11:15:29.887 に答える