Reference: https://msdn.microsoft.com/zh-cn/library/dd456847 (v=vs.110). aspx
Http://stackoverflow.com/questions/12481868/how-to-use-scalar-valued-function-with-linq-to-entity
1. First modify the <function> added in the edmx, change the IsComposable property to False, remove the ReturnType attribute, and then add a child node <CommandText>
<function name="todistance"Aggregate="false"builtin="false"niladicfunction="false"iscomposable="false"parametertypesemantics="allowimplicitconversion"Schema="dbo"> <CommandText>SELECT dbo. Todistance (@Lng1, @Lat1, @Lng2, @Lat2)</CommandText> <parameter name="Lng1"Type="float"Mode="inch"/> <parameter name="LAT1"Type="float"Mode="inch"/> <parameter name="Lng2"Type="float"Mode="inch"/> <parameter name="LAT2"Type="float"Mode="inch"/></function>
2, double hit open edmx file, select Model Browser, expand ****.store, stored procedure/function, select the desired function, right-click, import, in the pop-up box select scalar, select the parameter value, OK.
Scalar-valued functions that use databases in EF