我已阅读并尝试了this link中描述的所有内容以使此代码运行但我失败了。它说“无法转换为LINQ to Entities存储表达式。”
MyDb是我的MsSql数据库
GetDistance是我的标量值函数返回十进制
MyDbEntities as entity
MyDbModel as e.f. db模型
这是我的edmx文件
<Function Name="GetDistance" ReturnType="decimal" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="true" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo">
<Parameter Name="lat1" Type="decimal" Mode="In" />
<Parameter Name="lon1" Type="decimal" Mode="In" />
<Parameter Name="lat2" Type="decimal" Mode="In" />
<Parameter Name="lon2" Type="decimal" Mode="In" />
</Function>
这是我的Edm函数(MyDbEntites的部分类)
[EdmFunction("MyDbModel.Store", "GetDistance")]
public static decimal GetDistance(decimal lat1, decimal lon1, decimal lat2, decimal lon2)
{
throw new NotSupportedException("Direct calls not supported");
}
这是我的查询
var query = (from city in context.TableCity
where
city.IsActive
select new
{
Distance = MyDbEntities.GetDistance(0, 0, city.Latitude, city.Longitude)
});
谢谢