違いは何ですか?両方とも、データを取得してメモリに保存する前にSQL側で関数を実行するために使用されますか?
PS:
どちらもlinqで使用されて誘惑します。
違いは何ですか?両方とも、データを取得してメモリに保存する前にSQL側で関数を実行するために使用されますか?
PS:
どちらもlinqで使用されて誘惑します。
ドキュメントに記載されているように、EntityFunctions
LINQの概念モデルの正規関数をエンティティクエリに公開する共通言語ランタイム(CLR)メソッドを提供します。正規関数については、正規関数(エンティティSQL)を参照してください。
すべてのデータプロバイダーでサポートされており、すべてのクエリテクノロジで使用できます。正規機能はプロバイダーによって拡張できません。これらの正規関数は、プロバイダーの対応するデータソース機能に変換されます。これにより、データソース間で共通の形式で表現された関数呼び出しが可能になります。
一方、 SQLFunctions
LINQ to Entitiesクエリのデータベース内の関数を呼び出す共通言語ランタイム(CLR)メソッドを提供します。
したがって、両方の関数セットはネイティブSQLに変換されますが、SQLFunctionはSQL Server固有ですが、EntityFunctionsはそうではありません。
私がそれについて読んだように。CLRは、EntityFunctions関数をすべてのデータプロバイダーでサポートされている「正規関数」に変換します。
ただし、SqlFunctionsはSQL Serverに作業を行わせ、SQLServer専用に指定します。
SqlFunctions
EF4で導入された静的クラスであり、アセンブリにありSystem.Data.Entity
ます。これには、SQLServer関数にマップされるのようなメソッドの長いリストが含まれていCos, DateAdd, DateDiff, DatePart, GetDate, Exp, Sign
ます。これらの静的関数は、LINQtoEntitiesクエリで呼び出すことができます。
EF4は静的EntityFunctions
クラスも導入しました。このクラスは、LINQtoEntitiesクエリで使用できる概念モデルの正規関数を公開します。これらの関数は、System.Data.Metadata.Edm名前空間の関数にマップされており、概念モデルでのみ使用できます。
詳細については、ここをクリックしてください
誰かがこの古い投稿に出くわした場合に備えて、System.Data.Entity.EntityFunctions
現在は廃止され、に置き換えられていSystem.Data.Entity.DbFunctions
ます。