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

LINQ to Entities无法识别方法'Double Parse(System.String)',并且该方法无法转换为商店表达式

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

LINQ to Entities无法识别方法'Double Parse(System.String)',并且该方法无法转换为商店表达式

这里的问题是您的查询将被转换为SQL并在数据库上运行,并且Entity
framework不知道如何转换

Double.Parse
为有效的SQL代码。但是,您可以定义一个自定义方法来进行解析,并告诉Entity
framework如何将该方法转换为SQL。这是怎么回事:

定义翻译

在文本编辑器中打开* .edmx文件,然后寻找

<edmx:ConceptualModels>
标签。在此之下,您应该看到一个
<SchemaNamespace="YourModel" ...>
标签。在Schema标记内,添加以下内容:

    <Function Name="ParseDouble" ReturnType="Edm.Double">         <Parameter Name="stringvalue" Type="Edm.String" />         <Definingexpression>  cast(stringvalue as Edm.Double)        </Definingexpression>     </Function>

这定义了您的自定义ParseDouble函数将转换为的Enity-SQL代码。

创建要翻译的方法

现在,我们需要在代码中定义一个匹配函数,然后将其放入LINQ语句中。您的EDMX文件用于生成从ObjectContext继承的部分类。由于它是局部类,因此可以在不触摸生成的代码的情况下向其中添加自己的方法-
只需确保类名匹配即可。

using System.Data.Objects.DataClasses;public partial class YourObjectContext{    /// <summary>    ///     This method exists for use in LINQ queries,    ///     as a stub that will be converted to a SQL CAST statement.    /// </summary>    [EdmFunction("YourModel", "ParseDouble")]    public static double ParseDouble(string stringvalue)    {        return Double.Parse(stringvalue);    }}

现在,你可以回到你的LINQ语句,并替换的任何实例

Double.Parse
YourObjectContext.ParseDouble
。由于这是实际调用的实际方法
Double.Parse
,因此可以在LINQ
to Objects调用上使用,并且由于它也在EDMX文件中定义,因此它也可以由LINQ to Entities转换为SQL。

但是,等等,您还没有完成!

我注意到您的LINQ语句还包含对的调用

Math.Round
。我不知道Entity
framework是否包含该方法的翻译,但是如果不包含,则在为该方法修复该方法后,您将得到相同的错误
Double.Parse
。幸运的是,针对这种情况的解决方案几乎完全相同,只是EDMX文件中定义的功能如下所示:

    <Function Name="Round" ReturnType="Edm.Double">         <Parameter Name="input" Type="Edm.Double" />         <Definingexpression>  Round(input)        </Definingexpression>     </Function>

您可以使用此EDM规范功能列表来查看将哪些有效内容放入

<Definingexpression>
标签中。



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

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

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