AggregateUpdateConcurrencyException при использовании агрегатных DDD и предварительно сгенерированных идентификаторовC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 AggregateUpdateConcurrencyException при использовании агрегатных DDD и предварительно сгенерированных идентификаторов

Сообщение Anonymous »

У меня есть пациент -совокупный корневой сущность со списком детей посещения детей. В соответствии с принципами DDD любая операция на объекте посещения выполняется через совокупный корень. Кроме того, любая настойчивость должна сохранять саму совокупную корневую сущность независимо от того, что изменилось у его детей. Я не буду предоставлять код из этого домена, поскольку он не относится к проблеме. Я не позволяю EF Core генерировать идентификатор, и это дизайн, поскольку этот код живет в модульном монолите с несколькими контекстами DB, поэтому нет навигационных свойств / соединений. Идентификатор сущности отправляется в разные кэши через EF Core Interceptor, и идентификатор должен быть известен до настойчивости. Вызов SaveChanges в DBContext приводит к следующей ошибке: < /p>
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.
< /code>
Вот извлечение моего обработчика команд Mediatr с большим количеством кода, предназначенного для краткости: < /p>
var patient = await _repo.GetByIdAsync(request.PatientId, cancellationToken);

var visitResult = patient.RegisterEmergencyVisit("aLotOfParametersFromTheRequest");

await _unitOfWork.SaveChangesAsync(cancellationToken);
< /code>
Я совершенно уверен, что эта проблема связана с тем фактом, что мои идентификаторы предварительно сгенерированы, так как я работал над гораздо меньшим проектом, выполняющим подобное в прошлом, и получил одинаковую проблему. Единственный способ, которым я обнаружил, - это позволить Efcore генерировать идентификаторы само по себе. Я не могу сделать этот обходной путь в этом проекте.>

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

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

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

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

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

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

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