Problem with EF Core database:
Failed executing DbCommand (28ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
DECLARE @var0 sysname;
SELECT @var0 = [d].[name]
FROM [sys].[default_constraints] [d]
INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]
WHERE ([d].[parent_object_id] = OBJECT_ID(N'[User]') AND [c].[name] = N'PasswordSalt');
IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [User] DROP CONSTRAINT [' + @var0 + '];');
ALTER TABLE [User] ALTER COLUMN [PasswordSalt] varbinary(16) NULL;
If I have string password on user model everything working fine, but if I want to change it to byte[], I see upper error.
public class User
{
[Key]
public Guid UserId { get; set; }
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int RoleId { get; set; } //admin czy nie
public string PhoneNo { get; set; }
public string Login { get; set; }
[MaxLength(16)]
public byte[] PasswordHash { get; set; }
[MaxLength(16)]
public byte[] PasswordSalt { get; set; }
}
I tried just convert to byte in this method
public Models.User.User Authenticate(string email, string password)
{
if (string.IsNullOrEmpty(email) || (string.IsNullOrEmpty(password)))
{
return null;
}
throw new NotImplementedException();
var user = _dbContext.Set<Models.User.User>().SingleOrDefault(x => x.Email == email);
// check if customer with email exist
if (user == null)
{
return null;
}
byte[] array = Encoding.ASCII.GetBytes(user.PasswordHash);
byte[] array2 = Encoding.ASCII.GetBytes(user.PasswordSalt);
// check if password is correct
if (!VerifyPasswordHash(password, user.PasswordHash, user.PasswordSalt))
{
return null;
}
return user;
}
But it's not working and I need byte[] data. Can you help?
