2014-09-16 2 views
-1

웹 API를 통해 전달 된 날짜를 기반으로 레코드를 가져 오기 위해 저장소 패턴을 사용하여 SQL을 쿼리합니다. 쿼리 문자열은 date = 2014-09-16입니다 (예 :). 내 저장소가이 날짜를 받으면 하나가 전달되지 않아서 시간이 자동으로 12:00:00으로 설정됩니다. 이 같은 데이터베이스에 날짜를 일치에만 관심이 :Linq, C#, SQL의 날짜가 일치

public IQueryable<Instance> GetInstances(DateTime date) { 
     return DBContext.Instances.Where(x => x.StartDateTime == date).OrderBy(x => x.StartDateTime).AsQueryable(); 
    } 

문제는 일치가 DB의 레코드 레코드가 존재하더라도 때문에 시간 부분의 전체 일치하지 않기 때문에 발견되지 않는 것입니다 이 날짜. 위의 예에서 일치하는 가장 좋은 방법은 무엇입니까?

+5

그런데 왜 당신이하고 싶은 일을 정확하게하도록 특별히 고안된 방법을 사용할 수 없습니까? – Servy

+0

죄송합니다, 초보자. System.Data.Entity를 추가하고 DbFunctions를 호출했지만 현재 컨텍스트에 존재하지 않는다는 오류가 발생했습니다. – pgtips

+0

어떤 유형의 쿼리 공급자를 사용하고 있습니까? EF, linq, SQL 또는 다른 것을 사용하고 있습니까? 사용중인 쿼리 공급자와 관련된 함수를 사용해야합니다. – Servy

답변

-1

다음은 모두 기본값 인 .NET methods EF supports입니다. 이것들 만 지원됩니다. 다른 것을 원한다면 다음 날짜 함수 (Entity Framework sqlFunctions)를 사용하거나 코드를 저장 프로 시저 또는 테이블 함수 (컨텍스트에서 호출 할 수 있음)에 넣어야합니다.

+1

그는 구체적으로 당신이 말하는 적절한 기능을 사용하기를 원하지 않는다고 말했습니다. – Servy

+1

그는 DbFunctions.TruncateTime을 사용하고 싶지 않다고 말했다. 나는 SqlFunctions를 제안했고, 가장 가능성있는 DateDiff를 기술적으로 말해서 원래 언급 한 제한과 다른 것입니다. 더 자세한 내용을 포함하도록 질문을 업데이트했습니다. –