Итак, вот сценарий:
В DDD указано, что вы используете репозиторий для получения совокупного корня, а затем используйте его для добавления/удаления в любые коллекции, которые он имеет.
Добавление простое, вы просто вызываете .Add(Item item)
в Collection
, который хотите добавить. При сохранении добавляется новая строка в базу данных. Однако удаление отличается - вызов .Remove(Item item)
не удаляет элемент из базы данных, он просто удаляет внешний ключ. Итак, пока, да, это технически больше не является частью коллекции, она все еще находится в базе данных.
Чтение, единственное решение - удалить его, используя контекст данных. Но в соответствии с DDD объект домена не должен знать контекст данных, поэтому удаление должно выполняться вне домена.
Каков правильный путь? Или оставляет доступную базу данных с сиротами приемлемой (возможно, запустив процедуру для их очистки)?