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
什麼是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
對不起,它是EF1(DLL版本是2.0,這解釋了我的困惑) –
你不能移動到更新的東西嗎? – Pawel