当我尝试在Sub Select中调用我的存储库时,出现此错误。LINQ to Entities无法识别方法'System.Linq.IQueryable
IGrpTextRepository rep = new GrpTextRepository();
var query = new DetailViewModel
{
ViewDet = (from gh in _db.Grp
select new MultiDetailViewModel
{
Header = gh,
Txts = rep.FindAllLangTxtById(gh.GrpID)
}).ToList(),
Lang = _db.Language.ToList(),
};
我的接口是
public interface IGrpTextRepository
{
IQueryable<GrpText> FindAllLangTxtById(int GrpID);
}
public class GrpTextRepository : IGrpTextRepository
{
DBEntities db = new DBEntities();
public IQueryable<GrpText> FindAllLangTxtById(int GrpID)
{
return (from lang in db.Language
join gtxts in db.GrpText on lang.LangID equals gtxts.LangID into jointxt
from fintxt in jointxt.DefaultIfEmpty()
where fintxt.GrpID == GrpID
select fintxt);
}
}
以下是完整的错误消息
System.NotSupportedException:LINQ实体无法识别方法“System.Linq.IQueryable`1 [aaa.Models .GrpText] FindAllLangTxtById(Int32)'方法,并且此方法不能转换为存储表达式。
希望我能够简洁地解释一下......您对IQueryable接口,延迟执行和表达式树已经了解多少? – jfar 2010-08-20 23:04:21