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 有很大帮助。

在这种情况下,FirtsOrDefault 接缝对我来说更合理,而不是 SingleOrDefault

于 2012-07-18T10:24:23.643 回答