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好的,谢谢