1

엔티티 model.i를 사용하여 SalesDetialView라는 하나의 뷰를 업데이트했습니다.엔티티 모델의 뷰를 사용하여 중복 값을 인쇄하지 않습니다.

salesdetialview에는 3 개의 엔티티 키가 있습니다. 1.Type 2.No, 3.Custmor이 있습니다 enter image description here

SQL : 나는 SalesDetailView 에서이 쿼리 (난 그냥 5 열을 인쇄하고)

선택 고객, 유형, 아니, 영업 담당자, 양을 사용하고 있습니다 이 중복 값이 ​​표시되지 않는 이유

그러나 개체 모델을 통해 enter image description here 내가 중복 값을 받고 있지 않다 (아니오) 지금은 의심의 여지가

화면 enter image description here 이하이 .see. 엔티티 키 또는 모든 것에 관련된 모든 것. 내가 실수를하고있는 곳을 제안 해주세요.

+0

EF는 어떤 쿼리를 내 보냅니 까? –

답변

1

여러 행이 기본 열에서 동일한 값을 공유하는 경우 첫 번째 열만 데이터베이스에서 검색되어 다른 행에 복사됩니다. 세트가 2 차 컬럼으로 표시 최초의 존재와 열, 및

the correct result should be: 

A, 1 
A, 2 
B, 4 
B, 6 
B, 7 
C, 5 


The actual result in code with Entity Framework would become: 


A, 1 
A, 1 
B, 4 
B, 4 
B, 4 
C, 5 

당신의 엔티티 모델에서 뷰를 포함한 경우 예를 들어, 모델은 단순히 처음하지 Null을 허용 열을 사용하는 것 기본 키 (기본 키에 사용 된 모든 열은 null이 허용되지 않아야 함). 문제를 해결하려면 기본 키 열을 올바르게 선택해야합니다. null 값으로 인해 올바른 기본 키를 만들 수 없거나 단순히 각 행마다 다른 열 집합이없는 경우 각 행에 대해 고유 한 값이 항상 포함 된 열을보기에 추가해보십시오. 추가 한 후에 엔티티 모델에서 기본 키로 설정되어 있는지 확인하십시오.

위의 예에서 두 행을 기본 열로 설정하면 원하는 결과를 얻을 수 있습니다.

+0

기본 열을 사용하여 중복을 표시하지 않습니다. 그러나 제 견해로는 그것에 pk 컬럼이 없습니다. SQL에서 quary를 실행하면 모든 행이 표시됩니다. 그러나 엔티티 모델을 통해서가 아닙니다. – Kavitha

1

ObjectSet의 병합 옵션을 변경하여 해결할 수 있습니다. 예 :

using (TargetDBDataContext db = new TargetDBDataContext()) 
     { 
      db.SomeView.MergeOption = System.Data.Objects.MergeOption.NoTracking; 
      return db. SomeView.ToList(); 
     } 
관련 문제