【发布时间】:2012-05-29 07:23:55
【问题描述】:
我有一个 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 属性(空白)中有错字:
[EdmFunction("Model", " fooFunction")]
但是,现在我得到“fooFunction 无法解析为有效的类型或函数。”-错误。
【问题讨论】:
标签: c# entity-framework lambda