Dapper (MVCContrib Grid 포함)로 작성된 IQueryable에 Contains () 사용

dapper iqueryable linq mvccontrib-grid

문제

ASP.NET MVC 3 프로젝트에서 다음 ActionResult가 있습니다.

.AddFilter("searchWord", searchWord, u => u.Login == searchWord)
  • GridSortOptions 및 PagedViewModel 클래스는 뷰가 MVCContrib의 Grid를 사용하여 데이터를 표시 할 때 MVCContrib의 클래스입니다.
  • conn은 SQL 서버 데이터베이스와 통신하는 표준 SQLConnection입니다.
  • conn.Query는 데이터를 가져 오기 위해 Dapper가 제공하는 SQLConnection 확장 메서드입니다.
  • PagedViewModel에 채워지는 Query 속성은 IQueryable 형식입니다.

searchWord가 null 인 경우 모두 정상적으로 작동하지만 searchWord를 추가하면 MVCContrib Grid가 '객체 참조가 객체 인스턴스로 설정되지 않았습니다.'오류로 넘어집니다. 내가 .Contains 제거한 경우이) AddFilter 메서드에서 작동합니다.

.AddFilter("searchWord", searchWord, u => u.Login == searchWord)

누구나이 문제를 해결할 방법을 알고 있습니까? 아니면 Dapper IQueryable에 Contains를 사용할 수없는 이유는 무엇입니까?

감사

편집하다:

Sam의 대답 덕분에 다음과 같이 수정되었습니다.

.AddFilter("searchWord", searchWord, u => u.Login == searchWord)

수락 된 답변

이것은 정말로 Dapper 문제가 아닙니다.

당신은 개체의 컬렉션을 가지고, 그들 중 일부는이 null 속성을 당신은 함께 그들을 공격하려고 .Contains

var users = new UserModel[] { new UserModel(); } 
// Login is null 
users.AsQueryable().where(u => u.Login.Contains("bob")); // kaboom



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