DotNet Core C # Concurrency Entity Framework (уникальные ограничения для значения двойного ключа) - PullRequest
0 голосов
/ 27 декабря 2018

TL & DR: несколько одновременных задач, пытающихся поместить идентичные записи в базу данных;По сути НЕСКОЛЬКО задач ускоряются и открываются несколько файлов, которые могут быть идентичными.

Жизненно важно сохранить всю информацию в сильно вложенной таблице на основе IP-адреса;Вот что я пробовал за последние 4 дня работы (даже во время Рождества!)

  • Попытка использовать транзакцию в цикле do while () (с context.Rollback (). [Не работает!]
  • Попытка поместить случайные сны в каждый из вставок, чтобы остановить состояние гонки [Не работает!]
  • Сделан код больше не Asyc. [Didn 't работа!]
  • Текущий алгоритм не работает и ЦП привязки! [Не работает!] \
  • Отдельно добавьте КАЖДЫЙ объект в таблицу индивидуально [Не работает!]

Каждый из объектов увеличивается во время вставки. Вот почему это не имеет смысла. У меня нет слов.

Отношения объектов

IP has many Incidents;

1 Ответ

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

Я думаю, у вас могут быть проблемы в следующих строках:

Vendor vendorInstancer = new Vendor();
vendorInstance.IncidentID = IncidentId;
context.Vendors.Add(vendorInstancer);

Обратите внимание на имена переменных.Вы создаете vendorInstancer, но обновляете идентификатор vendorInstance.То есть не объект, который вы сохраняете в базе данных.Трудно определить разницу в одной букве.

...