有没有办法在使用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
答案 0 :(得分:0)
似乎我的问题没有解决方案,所以我要将整个linq封装到实体查询到一个存储过程,它将能够调用我的UDF。