我的dbContext类接口如下
public interface IDataContext : IDisposable, IUnitOfWork
{
IQueryable<T> Query<T>() where T : class ;
.... Other methods
}
我的实现就像这样
public IQueryable<T> Query<T>() where T : class
{
return Set<T>();
}
现在我这样查询
var menus = (from s in _dbContext.Query<SiteMenu>()
from r in _dbContext.Query<RoleMenu>()
where r.Role.Name == rolename
select s).ToList();
我收到以下错误
LINQ to Entities无法识别方法'System.Linq.IQueryable`1 [G.Domain.Models.Models.RoleMenu]查询[RoleMenu]()'方法,而且此方法无法转换为商店表达式。
我要明确加入这项工作,你能解释一下吗?
答案 0 :(得分:1)
即使你有一个完美的LINQ查询,如下所示:
var menus = (from s in _dbContext.Query<SiteMenu>()
from r in _dbContext.Query<RoleMenu>()
where r.Role.Name == rolename
select s).ToList();
如果Query方法在其中调用了一些自定义方法,它将嵌入到试图将此LINQ查询转换为SQL的逻辑中,并尝试将任何方法调用转换为适当的SQL方法。 LINQ中的方法支持有限,因此它发现它无法转换为SQL的方法“QueryRoleMenu”,并抛出此异常。