2

この質問は、なぜ上記のキーワードを使用するのかについてです。その方法を説明している MSDN ページがたくさん見つかりました。その理由を探しています。

それらが必要であることを意味する、どのようなクエリを作成しようとしていますか? 私が見つけた例は他の方法で達成可能であるように見えるので、私は尋ねます...

自分で調べてみるために、AdventureWorks データベースの Employee テーブルと EmployeePayHistory テーブルを使用して、非常に単純なエンティティ モデルを作成しました。

私がオンラインで見た 1 つの例は、次の Entity SQL に似たものを示しています。

SELECT VALUE
    DEREF(CREATEREF(AdventureWorksEntities3.Employee, row(h.EmployeeID))).HireDate
FROM 
    AdventureWorksEntities3.EmployeePayHistory as h

これは、結合を指定しなくても HireDate を引き戻すように見えますか?

以下の SQL よりも優れているのはなぜですか (まったく同じことをしているように見えます)。

SELECT VALUE
    h.Employee.HireDate
FROM 
    AdventureWorksEntities3.EmployeePayHistory as h

上記の 2 つのステートメントを見ると、CREATEREF、DEREF ビットが追加されているものを理解できません。

目的を実証するシナリオが見つからなかったと思います。これらのキーワードを使用する方が簡単であるか、必要な結果を達成する唯一の方法であるシナリオがあると思います。

見つからないのはシナリオです....

誰でもギャップを埋めることができますか?SQL のセット全体は必要ありません。私が必要としているのは、遊ぶための出発点、つまり、1 つまたは 2 つのシナリオの簡単な説明です。

4

2 に答える 2

1

TL;DR - REF/DEREF は C++ ポインターに似ています。それらは永続化されたエンティティへの参照です (データ ソースに保存されていないエンティティではありません)。

なぜそのようなことを使用するのですか?: エンティティへの参照は、DEFEF された (または展開された、または埋められた、またはインスタンス化された) エンティティを持つよりも少ないメモリを使用します。これは、画像情報と画像データ (データベースに保存された 4 GB のファイル) を含む多数のレコードがある場合に便利です。REF を使用せず、画像のメタデータを取得するためだけにこれらのエンティティを 10 個引き戻した場合、すぐにメモリがいっぱいになります。

分かってる。クエリでメタデータを引き戻すだけの方が簡単ですが、そうすると REF が何に適しているかという点が失われます :-D

于 2012-08-11T00:01:07.760 に答える