C# 返回字节数组时出现LINQ字符串转换错误

C# 返回字节数组时出现LINQ字符串转换错误,c#,.net,C#,.net,我正在尝试使用实体框架将哈希和盐存储在数据库中。但是当我试图调用这个代码来返回其中一种盐时 var salt = (from u in db.Users join p in db.Passwords on u.Name equals p.UserName where u.Name == username select p.Salt).First(); 我被抛出此异常: System.InvalidCastException

我正在尝试使用实体框架将哈希和盐存储在数据库中。但是当我试图调用这个代码来返回其中一种盐时

var salt = (from u in db.Users
            join p in db.Passwords on u.Name equals p.UserName
            where u.Name == username
            select p.Salt).First();
我被抛出此异常: System.InvalidCastException:'无法将'System.String'类型的对象强制转换为'System.Byte[]'类型。'

我的密码实体如下所示:

    class Password
    {
        [Key]
        public string UserName { get; set; }
        public byte[] Hash { get; set; }
        public byte[] Salt { get; set; }
        public User User{ get; set;}
    }

表的列可能是varchar或类似的内容,而不是binary/varbinary数据类型,或者数据库服务器用于存储二进制数据的任何术语


如果您使用的是EF core,请参阅。有一个
StringToBytes转换器可用。

您的表的列可能是varchar或类似的,而不是binary/varbinary数据类型,或者数据库服务器用于存储二进制数据的任何术语


如果您使用的是EF core,请参阅。有一个可用的
StringToBytes转换器

数据库中列的实际数据类型是什么?密码表中的
Hash
Salt
的定义是什么?@jeroenh他们是nArchThen,这是您的错误。为什么在代码中将它们定义为
字节[]
?LINQ无法神奇地将字符串转换为字节[]@jeroenh好的,谢谢您的数据库中列的实际数据类型是什么?密码表中的
Hash
Salt
的定义是什么?@jeroenh他们是nvarharth,这是您的错误。为什么在代码中将它们定义为
字节[]
?LINQ无法神奇地将字符串转换为字节[]@jeroenh好的,谢谢