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