2013-03-26 69 views

回答

12

隨着文檔狀態EntityFunctions

提供公共語言運行時(CLR),該至Entities查詢暴露概念 模型規範函數在LINQ方法。有關規範函數的信息 ,請參見規範函數(實體SQL)。

其中Canonical functions

由所有數據提供者的支持,並且可以通過所有查詢 技術一起使用。規範函數不能由提供者擴展。 這些規範函數將被轉換爲提供者的相應數據源功能 。這允許功能 跨數據源以常見形式表示調用。

SQLFunctions

提供公共語言運行庫(CLR)在LINQ to Entities查詢調用函數中 數據庫的方法。

因此,雖然這兩組函數都被轉換爲原生SQL,但SQLFunctions是SQL Server特有的,而EntityFunctions則不是。

+0

我從你的答案明白的是,無論在SQL執行(如果我使用它)。對 ? – Dabbas 2013-03-26 12:55:55

+0

@dabbas是的,這是正確的 – Phil 2013-03-26 13:02:33

+0

好吧,我不相信這是真的。我只是不得不將所有'SqlFunctions.DateDiff'改爲'DbContext.DiffDays',因爲後面的'不能被翻譯成....'並使用SqlServer 2012 local db ... – Leonardo 2015-08-20 17:37:55

5

當我讀到它。 CLR將EntityFunctions函數轉換爲「規範函數」,它們受所有數據提供者支持。

但SqlFunctions使SQL Server做的工作,他們只爲SQL Server指定。

For more information

4

SqlFunctions是在EF4引入一個靜態類,並且是在裝配System.Data.Entity。它包含一系列像Cos, DateAdd, DateDiff, DatePart, GetDate, Exp, Sign這樣的方法,它們被映射到SQL Server函數。這些靜態函數可以在LINQ to Entities查詢中調用。

enter image description here

EF4還推出了靜態EntityFunctions類。該類提供了可用於LINQ to Entities查詢的概念模型規範函數。這些函數被映射到System.Data.Metadata.Edm命名空間中的函數,並且它們僅在概念模型中可用。

enter image description here

欲瞭解更多信息,請點擊here