我在SQL server中声明了一个用户定义的函数。按照说明here我将该功能刷新到我的EDMX中(使用"从数据库更新模型"),结果是:
<Function Name="uf_GradeToGradeFlag" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="true" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo" ReturnType="smallint">
<Parameter Name="grade" Type="smallint" Mode="In" />
</Function>
然后我创建了一个静态方法:
[EdmFunction("SchoolManagement.BL", "uf_GradeToGradeFlag")]
public static short GradeToGradeFlag(short grade)
{
throw new NotSupportedException("Direct calls are not supported.");
}
现在,当我在Linq-to-Entities调用中调用此方法时,我得到:
System.NotSupportedException:指定的方法&#39; Int16 GradeToGradeFlag(Int16)&#39;在类型&#39; MyDomain.ModelDefinedFunctions&#39;无法转换为LINQ to Entities存储表达式。
我怀疑问题出在EdmFunctionAttribute constructor中的namespaceName
参数。但文档非常模糊。当您谈论SQL函数时,&#34;命名空间&#34;究竟是什么?