我有一个 SQL 函数,我想在使用实体框架的 lambda 表达式中使用它。假设 SQL 服务器函数是“fooFunction”。我在 EDMX 的概念模型中映射了这个函数,如下所示:
<Function Name="fooFunction" ReturnType="Edm.String">
<Parameter Name="param1" Type="Edm.Int32" />
<Parameter Name="param2" Type="Edm.String" />
<DefiningExpression>
dbo.fooFunction(param1, param2)
</DefiningExpression>
</Function>
我有一个静态类,在其中我将此函数映射到代码如下:
[EdmFunction("Model", "fooFunction")]
public static string fooFunction(int param1, string param2)
{
throw new NotImplementedException("Direct calls are not supported.");
}
但是,当我尝试调用此方法(在已编译查询上)时,出现“无法转换为存储表达式”错误:
CompiledQuery.Compile<...> .... .Where(fooFunction(0,"")=="value")
我一直在挠头,但我就是不明白。
有人可以帮我吗?谢谢!
编辑:哎呀,我的 EdmFunction-attribute(空格)中有一个错字:
[EdmFunction("Model", " fooFunction")]
但是,现在我得到“fooFunction 无法解析为有效的类型或函数。”-错误。