Ядро Entity Framework: ожидается, что операция с базой данных повлияет на 1 строку (и), но фактически затронула 0 (и) - PullRequest
0 голосов
/ 07 декабря 2018

Я использую Sql Server в Linux с EC Core (2.1.0-preview1-final)

Я пытаюсь обновить некоторые данные, поступающие из запроса службы веб-API (PUT).Данные (тикет) передаются правильно и десериализуются в объект (тикет).

При попытке обновления я использую следующий код:

public Ticket UpdateTicket(Ticket ticket)
        {
            using (var ctx = new SupportTicketContext(_connectionString))
            {
                ctx.Entry(ticket).State = EntityState.Modified;
                ctx.SaveChanges(); // <== **BLOWS UP HERE**
                var result = ctx.Tickets
                    .First(t => t.TicketId == ticket.TicketId);
                return result;

            }
        }

Код выдает следующееошибка:

Предполагается, что операция с базой данных повлияет на 1 строку (и), но фактически повлияет на 0 строку (и).Данные могут быть изменены или удалены, так как объекты были загружены

  • Я могу вставить и извлечь из базы данных, нет проблем.
  • Если я перезагружаю Visual Studio, ошибка обычно возникает во второй раз, когда я пытаюсь обновить ЛЮБОЙ тикет (т. Е. Любой другой ticketId - кажется, что во втором и последующих запросах).
  • Обновления непредсказуемо успешны!Иногда я могу обновить другой тикет, и он проходит (даже по 3-му или последующему запросу)
  • Я пробовал несколько модификаций кода, включая

    ctx.Attach (билет);

но это не помогает.

Как мне получить его для успешного обновления базы данных?Любые идеи о том, как отладить это?Ведение журнала, кажется, трудно настроить.

Любые идеи с благодарностью.

1 Ответ

0 голосов
/ 10 декабря 2018
...