Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Document db - денормализованные ссылки - лучшая практика

Автор вопроса: CommunityОтветов: 1

Yo - это не проблема ravendb как таковая - это еще один вопрос дизайна, относящийся к документам dbs в целом.

Так что я использовал DenormalizedReference совсем немного, и мне пришло в голову, что во многих местах это делает DDD довольно сложным.

Итак, скажем, например, у меня есть объект с дочерней коллекцией:

 List<DenormalizedReference<SomeType>>

Эта дочерняя коллекция создается, когда родительский экземпляр создается с помощью перегруженного конструктора, принимающего List<SomeOtherType>

теперь - в ctor я хотел бы создать этот список из передаваемой коллекции SomeOtherType - это означает, что мне нужно будет создать новый SomeType для каждого SomeOtherType.

Без передачи DocumentSession в мой домен - чего я не собираюсь делать - это не сработает, потому что при сохранении родительского AR мы теряем свойства каждого дочернего объекта, кроме Id и Name.

Как все остальные справляются с этим?

design-patternsdocument-databaseravendb

Ответы

Ответ 1 · рейтинг 4 · Ayende Rahien

Вы не можете этого сделать. Вернее, вы не должны этого делать.

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы