Нарушение ограничения PRIMARY KEY «PK_AspNetUsers». Невозможно вставить дубликат ключа в объект «dbo.AspNetUsers».C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Нарушение ограничения PRIMARY KEY «PK_AspNetUsers». Невозможно вставить дубликат ключа в объект «dbo.AspNetUsers».

Сообщение Anonymous »

У меня следующая ситуация.

Я пытаюсь вставить новый объект типа «Категория».
Категория наследуется от созданного мной класса Entity. Когда я пытаюсь создать или обновить файл Category. Сбой при сохранении изменений контекста.


Нарушение ограничения PRIMARY KEY «PK_AspNetUsers». Невозможно вставить дубликат ключа в объект dbo.AspNetUsers.


Здесь вы можете увидеть класс Entity.

Код: Выделить всё

public class Entity : IEntity
{
public Guid Id { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime ModifiedOn { get; set; }
public StateCode StateCode { get; set; }

public User CreatedBy { get; set; }
public User ModifiedBy { get; set; }
}
У меня также есть класс User, который наследуется от IdentityUser

Код: Выделить всё

public class User : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }

public string Street { get; set; }
public string Number { get; set; }
public string Zipcode { get; set; }
public string City { get; set; }
}
Все мои остальные объекты имеют базовый класс «Entity».
Я сделал переопределение для SaveChanges, которое установит CreatedOn, CreatedBy, ... на Сохранить.

Код: Выделить всё

        var user = GetLoggedInUser();

base.ChangeTracker.Entries().ToList().ForEach(e =>
{
if (e.Entity.GetType() != typeof(User))
{
switch (e.State)
{
case EntityState.Added:
((Entity)e.Entity).Id = Guid.NewGuid();
((Entity)e.Entity).CreatedOn = DateTime.Now;
((Entity)e.Entity).ModifiedOn = DateTime.Now;
((Entity)e.Entity).CreatedBy = user;
((Entity)e.Entity).ModifiedBy = user;
break;
case EntityState.Modified:
((Entity)e.Entity).ModifiedOn = DateTime.Now;
((Entity)e.Entity).ModifiedBy = user;
break;
}
}

});
Когда я вызываю Context.SaveChanges(); Я получаю эту ошибку.
Я не понимаю, зачем он пытается создать пользователя, если он уже существует? Я извлекаю пользователя с помощью GetLoggedInUser().

Может кто-нибудь объяснить мне, почему?

Подробнее здесь: https://stackoverflow.com/questions/602 ... plicate-ke
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»