我有以下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[])
,但我想找到这个的根本原因。
答案 0 :(得分:6)
此行上方是否定义了hash
和password
?看起来您可能忘记在查询中添加u.
。如果已定义password
,则您不会看到错误,但它永远不会等于hash
。
你的意思是写:
var users = rdc.Users.Where(u => u.EmailAddress == emailaddress && u.Password == hash);
^^^
此外,@ Mark指出使用==
运算符会显示.Equals
运算符可能忽略的错误。