如何在EF2 linq中调用用户定义的函数到实体?

时间:2012-11-13 15:57:25

标签: .net entity-framework linq-to-entities

有没有办法在使用Entity Framework v2时从LINQ调用SQL Server用户定义函数?

我已经找到了使用Entity Framework 4的方法(在blog post中解释了所有内容),但似乎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

1 个答案:

答案 0 :(得分:0)

似乎我的问题没有解决方案,所以我要将整个linq封装到实体查询到一个存储过程,它将能够调用我的UDF。