6

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関数を使用する"と答える前に、私の例はちょうどそのような例です。私はこれを使用したいと思う他の多くの方法があります。前もって感謝します。

+0

試しましたか?つまり、式>を返し、 'GetEndDate(m)<= DateTime.Now'というクエリを実行します。 – mellamokb

+0

はい、それは動作しません。 「Expression >」と「DateTime」を比較できません。 – Ocelot20

+0

あなたは私の答えを試しましたか? – Guillaume86

答えて

関連する問題