2012-07-18 2 views
0

mvc3 linq 사용하는 동안 일부 비정상적인 것으로 나타났습니다.linq 데이터베이스에서 값을 찾을 수 없습니다.

"PIN"열이있는 데이터베이스 테이블이 있습니다. 열은 28 자 여야하며 완전히 임의의 문자를 저장할 수 있습니다. 그럼 난 컨트롤러 액션이 : PIN 보유 할 때

Function Unlock() As ActionResult 
     Dim key As String = Request("token") 
     If key IsNot Nothing Then 
      Dim user As Users = db.Users.SingleOrDefault(Function(u) u.PIN = key) 
      If user IsNot Nothing Then 
       user.PIN = Nothing 
       db.SaveChanges() 
       Return View() 
      End If 
     End If 
     Return RedirectToAction("Index", "Home", New With {.Area = ""}) 
    End Function 

예를 들어 "을 공동/5c1mmil2e + clGK3c6JvdrGpQ ="같은 값이 경우에도 키 문자열 쿼리 문자열에서 전체 문자열 것을 읽지 만 사용자 참조는 항상 아무것도 끝 없다 데이터베이스에 저장됩니다.

반면 PIN이 "GbgI4QAaYWanaKWUm6j7Jg5IpA8 ="인 경우 모든 것이 올바르게 작동합니다. 그래서 linq는/또는 + 같은 몇몇 문자에 문제가있을 수 있지만 어떻게이 문제를 해결할 수 있을지 생각했습니다. 그것은 당신에게 LINQ에 많은 도움이 될 것입니다 debuging 동안

+1

에서 – bhuvin

+0

@bhuvin는 '=='와 싱글 '='교체하십시오 : 이것은 VB.NET, 아니 == –

+0

오이 존재하지 @DanielHilgarth - 죄송합니다 ... – bhuvin

답변

1

u.PIN.Equals(key)

사용 intelliTrace을 시도합니다.

또한

FirtsOrDefault 솔기 더 합리적 나를 위해이 경우 대신 SingleOrDefault

+0

요청 ("토큰")이 빈 공간으로 바뀌 었음을 알았 기 때문에 URL 바코드에 문자열을 직접 삽입하는 대신 URL을 인코딩해야합니다. 그건 내 실수 였어 그래서 linq하지 않습니다. 그러나 나는 firstordefault를 사용하는 것이 더 합리적이기 때문에 답을 표시 할 것입니다. –

관련 문제