2

Entity Framework v2 を使用しているときに、LINQ からエンティティへの SQL Server ユーザー定義関数を呼び出す方法はありますか?

Entity Framework 4 を使用してこれを行う方法を見つけました (すべてこのブログ投稿で説明されていますが、EdmFunctionAttribute クラスは EF4 では使用できないようです :(

それが不可能な場合、LINQ で複雑な where 句をエンティティに書き込む最善の方法は何ですか? これがどれほど複雑かを示すための私の関数の抜粋です:

IF @ageOfReferenceType = 3 or @ageToCompareType = 3 -- if one is expressed in weeks
    BEGIN
        --convert both to weeks
        SET @ageOfReference = @ageOfReference * CASE @ageOfReferenceType
                WHEN 1 THEN 52
                WHEN 2 THEN 4
                WHEN 3 THEN 1
            END
        SET @ageToCompare = @ageToCompare * CASE @ageToCompareType
                WHEN 1 THEN 52
                WHEN 2 THEN 4
                WHEN 3 THEN 1
            END
    END
    ELSE -- last solution, one is in years and the other in months
    BEGIN
        -- convert both to months
        SET @ageOfReference = @ageOfReference * CASE @ageOfReferenceType
                WHEN 1 THEN 12
                WHEN 2 THEN 1
            END
        SET @ageToCompare = @ageToCompare * CASE @ageToCompareType
                WHEN 1 THEN 12
                WHEN 2 THEN 1
            END
    END
END
IF @ageToCompare >= @ageOfReference
BEGIN
    RETURN 1
END
4

1 に答える 1

0

私の問題に対する解決策はないようです。そこで、linq to entityクエリ全体をストアドプロシージャにカプセル化して、UDFを呼び出すことができるようにします。

于 2012-11-14T11:30:13.300 に答える