2016-07-12 3 views
2

Entity Framework에서 실행할 때 대 직접 실행될 때와 다른 결과 집합을 반환하는 매우 간단한 쿼리 (단일 테이블에 대해)가 있습니다. SQL Server Management Studio. 처음에는 EF가 다른 SQL을 생성한다고 생각했지만 직접 SQL 쿼리로 다시 작성한 후에도 여전히 다른 결과를 반환합니다.Entity Framework 5.0 쿼리 결과가 데이터베이스의 직접 SQL 쿼리와 다릅니다

작업 검색어 :

SELECT * 
FROM Users 
WHERE IsActive = 1 
    AND IsAdvisor = 1 
ORDER BY Initials 

실패 코드 :

//var query = this.BaseDB.Users.Where(x => x.IsAdvisor && x.IsActive).OrderBy(x => x.Initials); 
var query = this.BaseDB.Users.SqlQuery("SELECT * FROM Users WHERE Users.IsActive = 1 AND Users.IsAdvisor = 1 ORDER BY Initials"); 
return query.ToList(); //this query (either variant, returns the same result set, but is missing values. 

무슨 일이 일어나고 있는지 어떤 생각? 그건 그렇고, 나는 같은 DB를 질의하고 있는지 확인하기 위해 다시 체크했다.

+1

SqlQuery를 사용하면 AFAIR EF가 쿼리를 건드리지 않으므로 동일한 결과가 생성됩니다. 같은 데이터베이스에 연결하고 있는지 확인하지 않는 경우 – Pawel

+0

IsActive 또는 IsAdvisor 불린 중 하나입니까? – WillC

+0

IsAdvisor와 IsActive가 데이터베이스의 정수이면 'x.IsAdvisor'는' 부울 값으로 해석됩니다. 정수 인 경우 쿼리의 int 값을 확인하십시오. 'var query = this.BaseDB.Users.Where (x => (x.IsActive == 1) && (x.IsAdvisor === 1)) OrderBy (x => x.Initials) .ToList();' – Ingenioushax

답변

0

먼저 답장을 보내 주셔서 감사합니다. 이것은 나 자신의 실수였습니다. 이전 개발자가 특정 레코드에 대한 표시 속성을 개별적으로 설정했습니다. (EF가 올바른 결과 집합을 반환했습니다.)