Timur2342
@Timur2342

Как исправить ошибки SqliteException: SQLite Error 19: 'UNIQUE constraint failed: AspNetUsers.NormalizedUserName' и DbUpdateException?

Сущности:
public class Review
 {
     [Key, Required] public int ReviewId { get; set; }

     [Required] public int RecipeId { get; set; }
     [Required] public Recipe Recipe { get; set; }

     [Required] public string Comment { get; set; }
     [Range(1, 10)] public int Estimation { get; set; }


     [Required] public string UserId { get; set; }
     public User User { get; set; }
 }
public class User : IdentityUser
{
    public List<Recipe> Recipes { get; set; }
    public List<Review> Reviews { get; set; }
}


Код обработчика страницы отвечающий за создание рецепта:
public async Task<IActionResult> OnPost()
{
    var owner = await _userManager.GetUserAsync(User);

    var recipe = new Recipe { Name = BindingModel.Name,
        Discription = BindingModel.Discription, CookingMinutesTime = BindingModel.CookingMinutesTime,
        CookingSteps = BindingModel.CookingSteps, ChangeVersion = 0, UserId = owner.Id, User = owner};

    using ApplicationDbContext db = new();
    db.Recipes.Add(recipe);
    db.SaveChanges();

    if (recipe == null)
        return NotFound();
    
    return RedirectToPage("RecipePage", "OnGet", new { id = recipe.RecipeId });
}

внимание на вот этот фрагмент кода UserId = owner.Id, User = owner};, чтобы создать связь между юзером и рецептом достаточно всего свойству указать значение. У меня когда я оставляю просто UserId = owner.Id все работает нормально. Но я хочу юзать навигационное свойство, потому пишу User = owner, и вот тут начинается все. Проблема появляеться из за NormalizedUserName. 660da05245759300033978.png

Из за чего SqliteException: SQLite Error 19: 'UNIQUE constraint failed: AspNetUsers.NormalizedUserName' и DbUpdateException появляються?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
yarosroman
@yarosroman
C# the best
не пишите User = owner, это навигационное свойство, оно не хранится в базе, для связи достаточно UserId выставить. В вашем случае EF добавляет еще и юзера, а так ка он уже есть, отсюда и ошибка.

https://learn.microsoft.com/en-us/ef/core/saving/r...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы