2012-12-10 6 views
2

내가 EntityFramework 4.3.1을 사용하고 난 쿼리를 실행하면이엔티티 프레임 워크의 쿼리 결과

Context.Set<KullaniciYetkiView>().Where(y => y.KullaniciId == kullaniciId && y.YetkiKod == yetkiKod) 

같은 쿼리를 실행하려고하고 예상대로 115 개 레코드를 반환하고 있습니다. 그러나 내가 그 기록을 볼 때 그들 모두는 동일합니다. 그래서 나는 프로파일 러로부터 무엇이 빠졌는지 살펴보기 위해 아래와 같은 쿼리와 그 관리 스튜디오로부터 돌아온 115 개의 다른 레코드를 보게된다.

exec sp_executesql N'SELECT 
[Extent1].[YetkiKod] AS [YetkiKod], 
[Extent1].[KullaniciId] AS [KullaniciId], 
[Extent1].[LokasyonId] AS [LokasyonId], 
[Extent1].[YetkiId] AS [YetkiId], 
[Extent1].[HiyerarsikKod] AS [HiyerarsikKod], 
[Extent1].[LokasyonSeviye] AS [LokasyonSeviye], 
[Extent1].[Yetkili] AS [Yetkili], 
[Extent1].[Engelli] AS [Engelli], 
[Extent1].[LokasyonEngelli] AS [LokasyonEngelli] 
FROM [dbo].[sayKullaniciYetkiView] AS [Extent1] 
WHERE ([Extent1].[KullaniciId] = @p__linq__0) AND ([Extent1].[YetkiKod] = @p__linq__1)',N'@p__linq__0 uniqueidentifier,@p__linq__1 nvarchar(4000)',@p__linq__0='283CCB41-3BDF-4BEF-BD26-E46191CA069D',@p__linq__1=N'FIN.SATISFATURA.E' 

나는 문제가 EF와 그것이 내가이

 var yetkiler1 = Context.Set<KullaniciYetkiView>().Where(y => y.KullaniciId == kullaniciId && y.YetkiKod == yetkiKod).Distinct().ToList(); 
     var yetkiler2 = Context.Set<KullaniciYetkiView>().Where(y => y.KullaniciId == kullaniciId && y.YetkiKod == yetkiKod).ToList().Distinct(); 

첫 번째 쿼리는 115 행과 두 번째 반환 1.

enter image description here

을 반환과 같은 코드를 실행 증명하는 생각

나는 무엇이 누락 되었습니까?

미리 감사드립니다.

+0

그 KullaniciId 열이 비린내가있는 것 같습니다. 생성 된 쿼리는이를 고유 ID로 취급하지만 115 개의 레코드를 반환합니다. –

+1

모델 구성에 문제가있을 수 있습니다. http://stackoverflow.com/a/7955773/1099260을 확인하십시오. –

+0

예, 115 개의 레코드를 반환해야합니다. –

답변

0

Like Quinton이 내 모델 구성이 잘못되었다고 말했습니다.

당신은 키와 1 개 이상의 열이있는 경우 여기에 HasKey 방법 설명이 상황에 modelBuilder.Entity<KullaniciYetkiView>().HasKey(ky => new { ky.KullaniciId, ky.LokasyonId, ky.YetkiId });

같은 OnModelCreating 방법을 설정해야합니다. http://msdn.microsoft.com/en-us/library/gg671266(v=vs.103).aspx

관련 문제