Ответ 1
Предположим, что оба являются агрегатами, скопируйте все данные автора, которые вам нужны, в агрегат книги при добавлении новой книги, чтобы любые последующие команды имели достаточное количество авторских данных для работы. Теперь, если сборщику Author требуется информация о книгах, написанных автором, он может "подписаться" на событие NewBookAdded (технически вы можете отправить команду RegisterAsAuthorOfBook в агрегат Author в результате события NewBookAdded). Я предполагаю, что можно смоделировать это и наоборот, но я не настолько интимный с доменом Book Author.
Нижняя строка заключается в том, что вы действительно не храните много-ко-многим, потому что они не масштабируются. Вы должны начать думать о них (агрегатах) как отправке сообщений друг другу. Более важный вопрос заключается в том, что должно быть последовательным и в какой момент времени оно должно быть последовательным. Неужели мы заботимся о том, что автор не мгновенно отражает тот факт, что добавлена новая Книга, автором которой он/она является? Существуют ли какие-либо инварианты, которые автор хочет применить в отношении книг, которые он написал (и наоборот)?
Другое дело - перестать быть ориентированным на данные и более ориентированным на поведение. Каково поведение агрегатора книг и авторов? Это покажет, какие данные требуются в какой момент и как это должно быть смоделировано.
http://pastie.org/1220582 для первого удара в агрегате книги.