19

違いは何ですか?両方とも、データを取得してメモリに保存する前にSQL側で関数を実行するために使用されますか?

PS:
どちらもlinqで使用されて誘惑します。

4

4 に答える 4

17

ドキュメントに記載されているように、EntityFunctions

LINQの概念モデルの正規関数をエンティティクエリに公開する共通言語ランタイム(CLR)メソッドを提供します。正規関数については、正規関数(エンティティSQL)を参照してください。

ここでCanonicalは機能します

すべてのデータプロバイダーでサポートされており、すべてのクエリテクノロジで使用できます。正規機能はプロバイダーによって拡張できません。これらの正規関数は、プロバイダーの対応するデータソース機能に変換されます。これにより、データソース間で共通の形式で表現された関数呼び出しが可能になります。

一方、 SQLFunctions

LINQ to Entitiesクエリのデータベース内の関数を呼び出す共通言語ランタイム(CLR)メソッドを提供します。

したがって、両方の関数セットはネイティブSQLに変換されますが、SQLFunctionはSQL Server固有ですが、EntityFunctionsはそうではありません。

于 2013-03-26T12:50:10.563 に答える
5

私がそれについて読んだように。CLRは、EntityFunctions関数をすべてのデータプロバイダーでサポートされている「正規関数」に変換します。

ただし、SqlFunctionsはSQL Serverに作業を行わせ、SQLServer専用に指定します。

詳細については

于 2013-03-26T12:52:35.253 に答える
5

SqlFunctionsEF4で導入された静的クラスであり、アセンブリにありSystem.Data.Entityます。これには、SQLServer関数にマップされるのようなメソッドの長いリストが含まれていCos, DateAdd, DateDiff, DatePart, GetDate, Exp, Signます。これらの静的関数は、LINQtoEntitiesクエリで呼び出すことができます。

ここに画像の説明を入力してください

EF4は静的EntityFunctionsクラスも導入しました。このクラスは、LINQtoEntitiesクエリで使用できる概念モデルの正規関数を公開します。これらの関数は、System.Data.Metadata.Edm名前空間の関数にマップされており、概念モデルでのみ使用できます。

ここに画像の説明を入力してください

詳細については、ここをクリックしてください

于 2013-03-26T12:58:18.797 に答える
4

誰かがこの古い投稿に出くわした場合に備えて、System.Data.Entity.EntityFunctions現在は廃止され、に置き換えられていSystem.Data.Entity.DbFunctionsます。

于 2018-05-24T15:22:22.773 に答える