엔티티 대 dapper datetime 체크가 아닌 작업자

asp.net-mvc dapper entity-framework

문제

그래서 사용자가 그 날짜 사이에서 검색 할 수 있습니다 나는이 개 날짜 필드 ... 전후라는 이름의 1 개 형태가, 엔티티를 가지고도 말끔 사용합니다. 엔티티의 엔티티가 완벽하게 작동하지만 대퍼의 엔티티가 작동하지 않는 이유는 엔티티 하나가 잘못되었을 수 있습니다.

var article = (from x in db.Articles
                           where  x.created >= before && x.created <= after
                           select x);

그리고 여기는 대담한 사람 한 명입니다.

var article = sqlConnection.Query<Article>("Select * from articles where created>=@befor AND created<=@afte ", new { befor = before, afte = after});

그리고 네, Dapper에 대한 모든 연결은 데이터베이스로 이동하지만 어떤 이유로 그 두 날짜 사이의 레코드를 선택하지 않습니다 .. 제안 사항 ..

수락 된 답변

날씬한는 (주위에 약간의주의와 단지 원시 TSQL 주위에 래퍼 in , 날씬한 쿼리 간단한 "에서"varadic 만드는 마법을 추가하는 경우). 그래서; 이 TSQL에서 작동하는 경우는 사용자의 입력이 이해로, 날씬한에서 잘 작동합니다. 예를 들어, 나는 가정하고beforeafter 이 예에서는 비 - 널 (NULL)로 입력되는 DateTime 즉,

DateTime before = ..., after = ...;
var article = sqlConnection.Query<Article>(
    "Select * from articles where created>=@befor AND created<=@afte ",
    new { befor = before, afte = after});

부수적으로 다음과 같이 사용하는 것이 더 분명 합니다.

DateTime before = ..., after = ...;
var article = sqlConnection.Query<Article>(
    "Select * from articles where created>=@before AND created<=@after",
    new { before, after });

하지만 근본적으로 DateTime 이 아닌 null 값을 가진 매개 변수가 있으면 정상적으로 작동합니다.


인기 답변

여기서 문제는 before 값과 after 값이 string 로 보내지고 현재 로캘로 인해 날짜가 잘못 해석 될 수 있다는 것입니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.