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