Это родительский класс:
Код: Выделить всё
[Index(nameof(EmailId),IsUnique =true)]
public class User : Entity, IUser
{
[Required(ErrorMessage ="First Name is required."), MaxLength(20),MinLength(1)]
[DisplayName("First Name")]
public string FirstName { get; set; } = string.Empty;
[DisplayName("Last Name")]
[Required(ErrorMessage ="Last Name is required."), MaxLength(20),MinLength(1)]
public string LastName { get; set; } = string.Empty;
[DisplayName("Email Address")]
[Required(ErrorMessage = "Email Id is required"), MaxLength(50), MinLength(5)]
[DataType(DataType.EmailAddress)]
public string EmailId { get; set; } = string.Empty;
[JsonIgnore]
[DisplayName("Password"),MaxLength(200), MinLength(8),DataType(DataType.Password)]
public string? Password { get; set; }
[JsonIgnore]
public List RefreshTokens { get; set; }
}
Код: Выделить всё
[Owned]
public class RefreshToken
{
[Key]
[JsonIgnore]
public Guid Id { get; set; }= Guid.NewGuid();
public string Token { get; set; }
public DateTime Expires { get; set; }
public DateTime Created { get; set; }
public string CreatedByIp { get; set; }
public DateTime? Revoked { get; set; }
public string RevokedByIp { get;set; }
public string ReplacedByToken { get; set; }
public string ReasonRevoked { get; set; }
public Boolean IsExpired => DateTime.UtcNow >= Expires;
public bool IsRevoked => Revoked != null;
public bool IsActive => !IsRevoked && !IsExpired;
}
Код: Выделить всё
_unitOfWork.BeginTransaction();
User? _user = GetByEmailId(model.EmailId).FirstOrDefault();
// return null if user not found
if (_user == null)
throw new AppException("Username or password is incorrect");
if (_user.Password != model.Password.Hash())
throw new AppException("Username or password is incorrect");
// authentication successful so generate jwt token
var token = _jwtUtils.GenerateJwtToken(_user);
var _refreshtoken = _jwtUtils.GenerateRefreshToken(ipAddress);
_user.RefreshTokens.Add(_refreshtoken);
// remove old refresh token
removeOldRefreshTokens(_user);
apiResponse = _unitOfWork.Repository().Update(_user);
_unitOfWork.SaveChange();
_unitOfWork.CommitTransaction();
Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException: ожидалось, что операция базы данных влияет на 1 строку(и), но фактически затрагивает 0 строк;
Токен обновления добавляется в коллекцию таблицы пользователей, но при сохранении пользователя table Я получаю сообщение об ошибке
введите здесь описание изображения
Подробнее здесь: https://stackoverflow.com/questions/790 ... e-in-entit