Entity Framework を使用してラムダ式で使用したい SQL 関数があります。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 を有効な型または関数に解決できません」というエラーが表示されるようになりました。