RavenDB моделирование 1 ко многим документам - PullRequest
3 голосов
/ 12 октября 2011

Возьмите этот пример модели:

public class Location
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

public class Activity
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

Взаимосвязь между этими документами в каком-либо месте может не иметь или выполнять несколько действий. Скажем, в Лондоне можно поиграть в пейнтбол, заняться картингом и т. Д.

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

Примеры запросов:

  • Выбрать все местоположения
  • Получение сведений о местоположении (с указанием имени местоположения из URL)
  • Получить все действия для каждого местоположения (с указанием имени местоположения из URL)
  • Извлечение сведений о деятельности (с указанием названия местоположения и названия деятельности из URL)

Использование метода DenormalizedReference, описанного по адресу:

http://blogs.sonatribe.com/wayne/2011/07/06/using-denormalized-references-in-ravendb/

(и я видел это, но не мог понять синтаксис или если он делает то, что мне нужно

http://ravendb.net/faq/denormalized-references )

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

Так как мне этого добиться?

1 Ответ

2 голосов
/ 12 октября 2011

Фил,

  • имеет строковое свойство LocationId в Activity, которое позволит вам запрашивать их.
  • было бы проще, вероятно, просто сохранить действия как коллекцию внутри Местоположения (чтобы они не были отдельным документом, а были встроены внутри).
...