.net core 2 - нарушение ограничения уникального ключа - PullRequest
0 голосов
/ 12 мая 2018

Я получаю

"SqlException: невозможно вставить явное значение для столбца идентификаторов в таблице 'Organization', когда для IDENTITY_INSERT установлено значение OFF."

ошибкапри сохранении Organization, который уже существует в базе данных.Если Organization является новым, он проходит без каких-либо проблем - Organization создается в таблице Organization и ссылка на него правильно создается в таблице ASP NET Users.

  [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Register(RegisterViewModel model, string returnUrl = null)
    {
        ViewData["ReturnUrl"] = returnUrl;
        if (ModelState.IsValid)
        {
            Organization currentOrg = new Organization();

            var existingOrg = _context.Organization.Where(m => m.OrganizationName == model.Organization);

            if (existingOrg.Count() > 0)
            {
                //currentOrg = _context.Organization.Find(existingOrg.First().Recno);
                currentOrg = existingOrg.First();
            }

            else
            {
                currentOrg.OrganizationName = model.Organization;
            }

            var user = new ApplicationUser { UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName
                , AddToConstantContact = model.AddToConstantContact,
                Organization = currentOrg, CityId = "1" };
            var result = await _userManager.CreateAsync(user, model.Password);
            if (result.Succeeded)
            {
                _logger.LogInformation("User created a new account with password.");

                var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
                var callbackUrl = Url.EmailConfirmationLink(user.Id.ToString(), code, Request.Scheme);
                await _emailSender.SendEmailConfirmationAsync(model.Email, callbackUrl);

                await _signInManager.SignInAsync(user, isPersistent: false);
                _logger.LogInformation("User created a new account with password.");
                return RedirectToLocal(returnUrl);
            }
            AddErrors(result);
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }

1 Ответ

0 голосов
/ 12 мая 2018

Не знаю, как отдать должное ... но Сэм ответил правильно - следующий код исправил проблему:

            if (existingOrg.Count() > 0)
            {
                //user.Organization = new Organization();
                user.OrganizationId = existingOrg.First().Recno;
            }

            else
            {
                user.Organization = new Organization();
                user.Organization.OrganizationName = model.Organization;
            }


public class ApplicationUser : IdentityUser
{
    public String FirstName { get; set; }

    public String LastName { get; set; }

    public String CityId { get; set; }

    [ForeignKey("OrganizationId")]
    public virtual Organization Organization { get; set; }

    public int? OrganizationId { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...