【发布时间】:2015-07-22 18:38:56
【问题描述】:
这是我在 edmx:ConceptualModels 下的函数:
<Function Name="IntConvert" ReturnType="Edm.Int32">
<Parameter Name="stringvalue" Type="Edm.String" />
<DefiningExpression>
CAST(stringvalue AS Edm.Int32)
</DefiningExpression>
</Function>
这里是要翻译的方法:
public partial class SqlCustomFunctions
{
[EdmFunction("MyModel", "IntConvert")]
public static int IntConvert(string stringvalue)
{
throw new NotSupportedException("This function can only be used in a LINQ to Entities query");
}
}
下面是调用函数的代码:
filterResults = filterResults.OrderBy(x => SqlCustomFunctions.IntConvert(x.Badge)).Skip(start).Take(length);
报错信息如下:
base = {"LINQ to Entities 无法识别方法
'Int32 IntConvert(System.String)'方法,并且此方法不能 翻译成商店表达式。"}
看起来 edmx 没有编译函数或类似的东西。
是什么导致了这个问题,我该如何解决?
【问题讨论】:
-
我的意见是您需要将其拆分为 2 行。首先,将其转换为int,成功后转为LinQ