3

我有以下 Linq to SQL 查询。

var users = rdc.Users.Where(u => u.EmailAddress.Equals(emailaddress) && password.Equals(hash));

但它总是转化为:

SELECT [t0].[Id], [t0].[Guid], [t0].[RoleId], [t0].[EmailAddress], [t0].[Password], [t0].[FirstName], [t0].[LastName], [t0].[Created], [t0].[Activated], [t0].[LastAction]
FROM [dbo].[Users] AS [t0]
WHERE 0 = 1

我刚刚将表重新导入到我的 DBML 文件中,以确保反映最新的模式,但它仍然删除了我的子句并添加了WHERE 0 = 1

我可以使用ExecuteQuery<T>(string, params[]),但我想找到它的根本原因。

4

1 回答 1

6

是否hashpassword定义在这条线之上?看起来您可能忘记u.在查询中添加 。如果password已经定义,那么您不会看到错误,但它永远不会等于hash.

你的意思是写:

var users = rdc.Users.Where(u => u.EmailAddress == emailaddress && u.Password == hash);
                                                                   ^^^

此外,@Mark 指出使用==运算符会显示.Equals运算符可能忽略的错误。

于 2012-12-03T22:42:58.440 回答