加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – LINQ to Entities无法识别方法’System.Linq.IQueryable

发布时间:2020-12-15 18:18:25 所属栏目:百科 来源:网络整理
导读:参见英文答案 LINQ to Entities does not recognize the method ‘System.String Format(System.String,System.Object,System.Object)’2个 当我尝试在Sub Select中调用我的存储库时,我收到了此错误. IGrpTextRepository rep = new GrpTextRepository(); var
参见英文答案 > LINQ to Entities does not recognize the method ‘System.String Format(System.String,System.Object,System.Object)’2个
当我尝试在Sub Select中调用我的存储库时,我收到了此错误.
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 to Entities无法识别方法’System.Linq.IQueryable`1 [aaa.Models.GrpText] FindAllLangTxtById(Int32)’方法,并且此方法无法转换为商店表达式.

解决方法

简单的解决方案是在select(…)之前添加.ToList().
ViewDet = _db.Grp.ToList().Select(gh => new MultiDetailViewModel ...)

这样初始请求将转到数据库,返回结果,然后您可以使用针对Linq对象的select语句重新投影它们.

但是我不得不问为什么组和文本之间没有FK关系,因此两者之间的实体关联允许您只访问gh.GrpText并获取延迟加载的文本集合(或者急切加载使用.包括()).

正如@Doguhan Uluca在评论中指出的那样,使用ToList()是有风险的,因为它会导致该表中的所有内容被提取到内存中.你应该只在很小的集合上使用它.正确的方法是修复您的数据库设计,以便您可以有效地查询它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读