Cuando intento llamar a mi repositorio en un Sub Select, obtengo este error.LINQ to Entities no reconoce el método '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(),
};
mi interfaz es
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);
}
}
Aquí está el mensaje de error completo
System.NotSupportedException: LINQ a Entidades no reconoce el método 'System.Linq.IQueryable`1 [aaa.Models .GrpText] Método FindAllLangTxtById (Int32) ', y este método no se puede traducir a una expresión de tienda.
Desearía poder explicar esto sucintamente ... ¿Cuánto sabe usted ya sobre la interfaz IQueryable, la ejecución diferida y los árboles de expresiones? – jfar