小编Alv*_*mli的帖子

为什么“无法翻译 LINQ 表达式 'x'”?我没有使用“Where()”

当我执行以下代码时,出现错误:

System.InvalidOperationException:无法翻译 LINQ 表达式 'DbSet.Where(u => u.NormalizedEmail == __ToLower_0 && u.PasswordHash.SequenceEqual(__pass_1))'

但它在 .NET Core 2.2 中运行良好。.NET Core 3.1 中引发错误。

loginCreds.Password = loginCreds.Password.ToLower();
var pass = Helper.ComputeHash(loginCreds.Password);
var usr = await _context.Users
                        .FirstOrDefaultAsync(u => u.NormalizedEmail == loginCreds.Email
                                                  && u.PasswordHash.SequenceEqual(pass));
Run Code Online (Sandbox Code Playgroud)

但是,当我替换u.PasswordHash.SequenceEqual(pass)u.PasswordHash == new byte[16](仅用于测试)时,它起作用了。所以,问题是SequenceEqual(byte[] byte)方法。

我该如何解决这个问题?

c# linq entity-framework-core

5
推荐指数
2
解决办法
5632
查看次数

如何向SqlCommand添加参数?

我正在尝试添加参数SqlCommand,但它插入参数名称而不是参数值.

这是代码片段:

var QueryString1 = "Insert into UsersTable (Username, Password, IsAdmin, Email, Budget, Phone) " +
                   "values ('@Un', '@P','" + user.IsAdmin + "', '@E', '@B', '@Ph')";

using (SqlCommand command = new SqlCommand(QueryString1, con))
{
    command.Parameters.Add("@Un", SqlDbType.Text);
    command.Parameters["@Un"].Value = user.UserName;
    command.Parameters.Add("@P", SqlDbType.Text);
    command.Parameters["@P"].Value = user.Password;
    command.Parameters.Add("@E", SqlDbType.Text);
    command.Parameters["@E"].Value = user.Email;
    command.Parameters.Add("@B", SqlDbType.Text);
    command.Parameters["@B"].Value = user.Budget.Amount + "-" + user.Budget.Currency;
    command.Parameters.Add("@Ph", SqlDbType.VarChar);
    command.Parameters["@Ph"].Value = user.Phone;

    if (command.ExecuteNonQuery().Equals(0))
    {
        con.Close();
        return InternalServerError();
    }

    con.Close();

    return Ok();
}
Run Code Online (Sandbox Code Playgroud)

这是SQL Server的结果

抱歉模糊记录:)

c# t-sql sql-server ado

1
推荐指数
1
解决办法
58
查看次数

标签 统计

c# ×2

ado ×1

entity-framework-core ×1

linq ×1

sql-server ×1

t-sql ×1