栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

方法无法转换为商店表达式

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

方法无法转换为商店表达式

原因: 根据设计, LINQ to Entities
要求将整个LINQ查询表达式转换为服务器查询。在翻译查询之前,只会在客户端上评估一些不相关的子表达式(不依赖于服务器结果的查询中的表达式)。不支持没有已知转换的任意方法调用,例如本例中的GetHomeFeatures()。
更具体地说,LINQ to Entities仅支持无 参数构造函数Initializers

解决方案: 因此,要克服此异常,您需要将子查询合并到 GetCommunityFeatures()GetHomeFeatures()
的主查询中 __而不是直接从LINQ查询中调用方法。 另外,您尝试使用其参数化构造函数实例化 LazyList 的新实例时也 遇到
了问题,就像您可能在 LINQ to SQL中 所做的那样。为此,解决方案是切换到LINQ查询的客户端评估(LINQ to
Objects)。这将要求您在调用LazyList构造函数之前,为LINQ to Entities查询调用
AsEnumerable 方法。

这样的事情应该起作用:

public IQueryable<Models.Estate> GetEstates(){    return from e in entity.Estates.AsEnumerable()       let AllCommFeat = from f in entity.CommunityFeatures   select new CommunityFeatures {       Name = f.CommunityFeature1,       CommunityFeatureId = f.CommunityFeatureId   },       let AllHomeFeat = from f in entity.HomeFeatures   select new HomeFeatures() {       Name = f.HomeFeature1,       HomeFeatureId = f.HomeFeatureId   },       select new Models.Estate { EstateId = e.EstateId, AllHomeFeatures = new LazyList<HomeFeatures>(AllHomeFeat), AllCommunityFeatures = new LazyList<CommunityFeatures>(AllCommFeat)       };}

更多信息: 请查看 LINQ to
Entities,不支持什么?
有关更多信息。还请查看 LINQ to
Entities,关于不支持的解决方法

,以详细讨论可能的解决方案。(这两个链接都是缓存的版本,因为原始网站已关闭)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/411917.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号