Сначала EF-код: Как удалить строку из коллекции сущности, следуя DDD?

Итак, вот сценарий:

DDD утверждает, что вы используете хранилище для получения корня агрегата, а затем используете его для добавления/удаления в любые коллекции, которые у него есть.

Добавление простое, вы просто вызываете .Add(Item item) на Collection, в которую хотите добавить. При сохранении в базу данных добавляется новая строка. Однако удаление происходит иначе - вызов .Remove(Item item) не удаляет элемент из базы данных, а просто удаляет внешний ключ. Поэтому, хотя да, технически он больше не является частью коллекции, он все еще находится в базе данных.

Читая вокруг, единственное решение - удалить его с помощью контекста данных. Но согласно DDD объект домена не должен знать о контексте данных, поэтому удаление должно быть выполнено вне домена.

Как правильно поступить в этом случае? Или допустимо ли оставить базу данных полной сирот (возможно, запустить процедуру для их удаления)?

17
задан highace 20 July 2017 в 16:31
поделиться