2012-11-13 93 views
2

有沒有辦法在使用Entity Framework v2時從LINQ to Entities調用SQL Server用戶定義的函數?如何將EF2 linq中的用戶定義函數調用到實體?

我已經找到一種方法來做到這一點使用實體框架4(一切都在這個blog post解釋,但現在看來,該EdmFunctionAttribute類不可用EF4 :(

如果這是不可能,有什麼是寫一個複雜的where子句中的LINQ to實體這裏是我的函數摘錄向你展示它是如何複雜的最佳方式:

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

什麼是EF2?在.NET Framework 3.5 SP1和EF4在.NET Framework 4中發佈了EF1。最近發佈了EF5。 EF4支持EdmFunctionAttribute - http://msdn.microsoft.com/en-us/library/system.data.objects.dataclasses.edmfunctionattribute(v=vs.100).aspx – Pawel

+0

對不起,它是EF1(DLL版本是2.0,這解釋了我的困惑) –

+0

你不能移動到更新的東西嗎? – Pawel

回答

0

似乎沒有解決我的問題,所以我m將封裝整個LINQ到實體查詢到存儲過程,這將能夠調用我的UDF。

相關問題