DbUpdateConcurrencyException on Remove при попытке удалить запись из DbSet без предварительной загрузки - PullRequest
1 голос
/ 11 марта 2019

Я пытаюсь удалить запись без предварительной загрузки из БД. Я пробовал множество различных подходов (все, что мне удалось найти в Интернете), но ни один из них, похоже, не работает:

Database operation 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.

Например, этот код не работает:

using (var dbContext = _dbContextCreator())
{
     var report = new DataAccess.AssetReport { Id = id };
     dbContext.AssetReports.Attach(report);
     dbContext.AssetReports.Remove(report);
     await dbContext.SaveChangesAsync();
}

AssetReport выглядит так.

public class AssetReport
{
    [Key]
    public long Id { get; set; }
    public AssetReportType Type { get; set; }
    public AssetReportStatus Status { get; set; }
}

Эта запись существует в БД. Другие запросы не терпят неудачу. Выполнение dbContext.AssetReports.Any в том же контексте возвращает true. Удаление только что загруженной записи из БД также работает.

...