The database operation was expected to affect 1 row(s), but actually affected 0 row(s); data may have been modified or deleted since entities were loaded. See
http://go.microsoft.com/fwlink/?LinkId=527962 for information on understanding and handling optimistic concurrency exceptions.
public async Task DeleteUser(User user)
{
if (user.Role == Roles.Bank)
{
var bank = await _context.Banks.AsNoTracking().FirstOrDefaultAsync(x => x.CuratorId == user.Id);
if (bank != null)
{
_context.Entry(bank).State = EntityState.Deleted;
_context.Banks.Remove(bank);
}
}
_context.Entry(user).State = EntityState.Deleted;
_context.Users.Remove(user);
await _context.SaveChangesAsync();
}
работало вроде с ms sql но с posdtgres не работает
помогите пожалуйста, вообще без понятия что делать, я так понял можно закоментить удаление юзера и падает на удалении банка
я так понял что ошибка из-за того что Identity ALWAYS добавил на столбец после переноса данных и сейчас по 2 записи с Id 3 и 4 и не может удалить, должнго было быть ID 51 и 52, но нумерация не продолжилась
Здравствуйте, dsalodki, Вы писали:
D>я так понял что ошибка из-за того что Identity ALWAYS добавил на столбец после переноса данных и сейчас по 2 записи с Id 3 и 4
Id — не первичный ключ, раз значения дублируются? Надо сделать превичным ключом.
D>и не может удалить, должнго было быть ID 51 и 52, но нумерация не продолжилась
После переноса данных надо переставить IDENTITY. Как-то так:
SELECT setval(pg_get_serial_sequence('bank', 'id'), coalesce(MAX(id), 1)) FROM bank;
https://dba.stackexchange.com/questions/292617/restarting-identity-columns-in-postgresql
PS Удаление банка конечно проще можно написать, без AsNoTracking.
var bank = await _context.Banks.FirstOrDefaultAsync(x => x.CuratorId == user.Id);
if (bank != null)
{
_context.Banks.Remove(bank);
}