查询与电子邮件地址不匹配



我有以下查询在SSMS中工作正常:

SELECT ClientID FROM xxx.ClientUsers WHERE UserName = 'user@email.com'

它将为 ClientID 返回单个整数值(ClientID 和 UserName 是 PK(。

如果我在控制器中尝试相同的查询并且它无法返回结果。我已经确认表中存在User.Identity.Name。即使使用硬编码的电子邮件地址,它也不会返回数据。

var iTemp = -1;
iTemp = db.Database.SqlQuery<int>(@"SELECT ClientID FROM xxx.ClientUsers WHERE 
UserName = '" + User.Identity.Name + "'").First();

上面的代码不返回任何行。

如果将原始 SQL 查询与实体框架一起使用,请确保使用正确的参数化并避免容易受到 SQL 注入的影响:

var iTemp = db.Database.ExecuteSqlCommand(
    @"SELECT ClientID FROM xxx.ClientUsers WHERE UserName = @UserName", 
    new SqlParameter("UserName", User.Identity.Name)).FirstOrDefault();

甚至更好的是,您可以使用 LINQ:

var result = db.ClientUsers.Where(x => x.UserName == User.Identity.Name).FirstOrDefault(); 
if(result != null)
{
    var clientId = result.ClientID;
}

现在删除的答案中的代码在退出并重新加载项目后有效。不知道发生了什么,或者我可能做了什么?无论如何,谢谢大家的帮助!至少我学会了一种更好的方法来执行查询。

var result = db.ClientUsers.Where(x => x.UserName == User.Identity.Name).First().ClientID;

相关内容

最新更新