2012-01-12 2 views
2

모두!)) 다음은 코드입니다.LINQ 2 엔티티 쿼리가 작동하지 않지만 그 이유는 무엇입니까?

var existingEntities = (from record in globalOne.serviceContext.records_out 
         where record.timestamp.Date == DateTime.Now.Date 
         select record).ToList(); 

작동하지 않습니다.

또 다른 코드 :

var existingEntities = (from record in globalOne.serviceContext.records_out 
       where record.timestamp.Day == DateTime.Now.Day 
       select record).ToList(); 

그것은 작업을 수행합니다. 그래서

, 다음 문자열에서 문제 ID :

또한
where record.timestamp.**Date** == DateTime.Now.Date 

where record.timestamp.Date.Equals(DateTime.Now.Date) 

왜하지 않을 것이다? 나는 단서가 없다. "Timestamp"필드는 MS SQL SERVER의 dateTime 필드입니다. 그리고 테이블에 NO 레코드가 있습니다.

그리고 나는 그게 무슨 뜻인지 "작동하지 않는다"는 것을 거의 잊어 버렸습니다. 앱은 아무런 오류없이 해당 쿼리 (첫 번째) 다음에 중단 점에 도달하지 않습니다.

감사합니다.

+0

디버거에서 "휴식"을하면 어떻게됩니까? 뭐하는거야? –

+0

앱이 첫 번째 쿼리 이후에 중단 점에 도달하지 않습니다. – Monochromie

답변

2

EF가 필수 표현식 트리로 변환 할 수 없으므로 record.timestamp.Date으로 전화를 걸 수 있습니다 (SQL 명령으로 변환). 사실 EF는 제한된 수의 함수와 속성을 지원합니다. 그러나 DateTime의 경우 EF는 좋은 것을 가지고 있습니다 Canonical functions. 귀하의 경우에는 Day(), Month(), Year() 함수를 사용하여 문제를 해결할 수 있습니다 (링크 참조).

+0

감사. 그런데 왜 record.timestamp.day는 작동합니까? – Monochromie

+0

@ Monochromie, 내가 왜 정확하게 구현의 날을보아야하는지 말할 수는 없지만 복잡한 규칙이없는 단순한 속성이라고 생각합니다. 변환 할 수 있습니다. EF는 간단한 속성 인 Properties를 소량 지원합니다. –

관련 문제