私を正しい方向に向けていただければ幸いです。私はEF4.1CFアプローチを使用するソリューションに取り組んでいます。リポジトリパターンも使用します。SQLServerはR2です。
私はユーザーコントロールの開発を任されており、ユーザーが郵便番号を入力して送信すると、入力した郵便番号から半径Nマイルのイベントのリストが返されます。
データベースには、すべてのイベントの緯度と経度が保存されています。また、ユーザーが入力した郵便番号の緯度と経度も確認します。
明らかに、リストのフィルタリングがコードではなくデータベースサーバーで行われる場合は、パフォーマンスにとってはるかに有益です。
すべての計算を実行するためのC#のメソッドがあります。SQLにも同等のものがあります(UDFを作成する場合)。
しかし、私の質問は、Math.Sin、Math.Cosなどを使用してSQLにマップするLINQ式をどのように記述できるかということです。
コードの(非常に)単純な例は次のとおりです。
return p => p.Latitude == Math.Sin(0.90678234688337252436989061980805); <<<明らかに本番コードでは、変数があり、この式はこの例よりも重いでしょう。
このコードブロックが実行されたときに実行時に取得するのは、次の例外だけです。
「LINQtoEntitiesはメソッド'DoubleSin(Double)'メソッドを認識せず、このメソッドをストア式に変換できません。」
あなたの助けとアドバイスをありがとう。
JC