Сущности:
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.
Из за чего SqliteException: SQLite Error 19: 'UNIQUE constraint failed: AspNetUsers.NormalizedUserName' и DbUpdateException появляються?