SQLに変換するLinqクエリで使用できる関数を作成する方法を探しています。私がLinq-to-SQLを使用していたとき、私は同様のquestionを提出しました。答えは、db内のUDFにマップすることでした。私たちはモデル定義の清潔さのためにコードの最初のモデルを使用していますが、残念ながらdefine functionsの方法はありません。関数にマップし、私が知る限りストアドプロシージャにマップします。 dbを生成する必要があり、私はそれに何かを加えるべきではありません)。時間が経つにつれて進化する可能性のある非効率性を扱う簡単な方法はないので、私には大規模ではないようですが、ここでもそこにはありません...EF Code First:SQLに変換できるメソッド
とにかく、私はそうのような私のクエリで使用できるSQLに変換されます:
public static Expression<Func<MyEntity, bool>> FilterMe(int comparisonNumber)
{
return x => x.SomeProperty == comparisonNumber;
}
var query = MyEntities.Where(FilterMe(1));
はbool
を返す式のための可能な本だけですか?私はの線に沿って何かを探しています:
var query = from m in MyEntities
let endDate = GetEndDate(m.Start, m.Duration)
where endDate <= DateTime.Now
select m;
式関数でGetEndDate
を構築するためのいくつかの方法がありますか? GetEndDate
のコードは、私が長い間クエリに書いたときにSQLに変換されますが、かなり長くて読みにくいです。
編集 - ああ、誰かが "DateAddのためにSQL関数を使用する"と答える前に、私の例はちょうどそのような例です。私はこれを使用したいと思う他の多くの方法があります。前もって感謝します。
試しましたか?つまり、式>を返し、 'GetEndDate(m)<= DateTime.Now'というクエリを実行します。 –
mellamokb
はい、それは動作しません。 「Expression>」と「DateTime」を比較できません。 –
Ocelot20
あなたは私の答えを試しましたか? – Guillaume86