Linq to Entities に変換しようとしている SQL 文字列と接続を使用する古いメソッドがいくつかあります。
次のように、SQLをefクエリに書き直しました。
Using ctx As New DataEntities()
Dim station As String = (From sta In ctx.weather_stations
Let distance = SqlFunctions.SquareRoot(Math.Pow(69.1 * (sta.latitude - lat), 2) + Math.Pow(69.1 * (longi - sta.longitude) * SqlFunctions.Cos(sta.latitude / 57.3), 2))
Where distance < withinRange
Order By distance
Select sta.station_id).Take(1).ToString()
If Not String.IsNullOrEmpty(station) Then
Return station
Else
Return String.Empty
End If
End UsingData
これによりエラーが発生し、LINQ to Entities はメソッド 'Double Sqrt(Double)' メソッドを認識せず、このメソッドはストア式に変換できません。
このクエリは Linq to EF で実行できますか? もしそうなら、どうすればこのクエリを再構築して機能させることができますか?