0

mvc3 で linq を使用しているときに、いくつかの不規則性に気付きました。

「PIN」列を持つデータベース テーブルがあります。列には 28 文字が必要で、完全にランダムな文字を格納できます。次に、コントローラー アクションがあります。

    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

たとえば、PIN が "Co/5c1mmil2e+clGK3c6JvdrGpQ=" を保持している場合、キー文字列はクエリ文字列からその文字列全体を読み取りますが、同じ値がデータベースに格納されていても、ユーザー参照は常に何も終了しません。

一方、PIN が "GbgI4QAaYWanaKWUm6j7Jg5IpA8=" を保持している場合、すべて正常に機能します。それで、おそらくlinqは/や+のようないくつかの文字に問題があると思いましたが、この問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

試す u.PIN.Equals(key)

デバッグ中に intelliTrace を使用すると、linq で大いに役立ちます。

また、この場合、SingleOrDefault の代わりに FirtsOrDefault の縫い目がより合理的です

于 2012-07-18T10:24:23.643 に答える