1

LINQ to SQLを使用してアプリケーションを開発する際に、ストアドプロシージャが同じ主キーを持つ複数の異なる行を返した場合、LINQは完全なリストオブジェクト同じ。私は次の表を使用している場合たとえば、同じ基本キー値を持つ複数の行を返すストアドプロシージャ

ID Name Salary 
-- ---- ----- 
1 A  20 
2 B  200 
3 C  30 
4 D  520 

と私のストアドプロシージャは、同じ主キー、

ID Name Salary 
-- ---- ----- 
1 A  20 
1 B  200 
1 C  30 
1 D  520 

を除いてすべての行を返し、その後、LINQは

ID Name Salary 
-- ---- ----- 
1 A  20 
1 A  20 
1 A  20 
1 A  20 
、これらの行を結合します
+0

実際にあなたの質問は何ですか? –

+0

私はこれがLinqの機能かどうか、私は何か間違っていると尋ねていますか? – user960567

+2

これは、ストアドプロシージャのバグだと思います。重複した主キーを返すのはなぜですか? – Mat

答えて

3

これは機能であるバグではありません。エンティティフレームワークとLinq-to-Sqlは、ユニークに識別されたエンティティとエンティティのそれぞれのユニークキーを一度しかロードできませんので、同じキーを持つ同じエンティティタイプを表す複数のレコードを返すと、最初のレコードのみがエンティティにマテリアライズされ、同じキーを持つ他のすべてのレコードの表現(同じデータを返すだけでなく、エンティティと同じ参照を返します)。アイデンティティマップと呼ばれ、ORMツールの重要な機能です。

+0

OK、ありがとうございます。 – user960567

関連する問題