2016-10-21 73 views
1

enter image description hereenter image description here条件を満たすすべての行を取得する必要があります。しかし、私が試してみると、行数だけがデバッグ時に正しく表示されており、最初の行の値が繰り返し得られています。以下は私のコードですEntityframeworkを使用してデータベースから値を取得する

var data = (from jlist in entity.JobDetails 
      where jlist.JobID == QJobID 
      select jlist).ToList(); 

最初の行の値だけがvarデータに表示されています。私は表示される項目が2つ以上です

+0

@GiladGreen画像を追加するには – abdulkhadar7

+1

どのようにデバッグしていますか? Linqクエリは、遅延実行を頻繁に使用し、大きなコレクションのラッパーになる可能性があるため、デバッグするのが難しいです。 –

+0

出力とダビングの両方の写真を追加しました。 – abdulkhadar7

答えて

2

EFが知っているPKは、データベース内の実際のレコードを一意に識別しない主キーの不正確さを伝えています。これは、ビューがEFモデルにマップされているときに頻繁に発生します。これは、ビューが一意の識別を悩まない単なる格納されたクエリであるためです。

あなたのケースでは、単一の主キーをコンポジットキーに変更しました.EFを知らないか、またはJobIDがプライマリキーであることをEFに伝えただけです。

EFがエンティティオブジェクトを生成するとき、エンティティへの参照を持つEntityKeyが作成されます。これらのEntityKeyが一意である必要があります。そうしないと、変更トラッカーがクラッシュします。したがって、{ 1, 1 }{ 1, 2 }で識別される2つのエンティティがある場合、EFは1のみを参照しますが、EFは2番目のエンティティに既存のエンティティキーを使用します。変わった部分は、EFがこのエンティティキーと一致する2番目のインスタンスを実現することをまだ決めるということです。それがあなたの疑惑を正しい場所に向けるほうが良いかもしれない1つのJobDetailsレコードしか見ていないのであれば。

+0

素敵な説明+1 :) – Sampath

関連する問題