Ссылка на объект объекта значения родительского объекта в RavenDb - PullRequest
6 голосов
/ 26 мая 2011

Я недавно играл с RavenDB, и есть кое-что, что меня немного раздражает.

У меня есть объект-сущность с рядом объектов-значений, например,

class Foo
{
   IList<Bar> Bars { get; set; } 
}

Иногда я хочу передать объект типа Bar в метод / класс, нов какой-то момент хочу сослаться обратно на родительский объект.В мире NHibernate это действительно легко, если я настрою его с отношением 1 .. *, например,

class Bar
{
   Foo Foo { get; set; }
}

Однако RavenDb на самом деле не нравится то, что приводит к тому, что мне приходится создавать такие методы, как:

void DoSomething(Foo foo, Bar bar) 
{
   Console.WriteLine(foo);
   Console.WriteLine(bar);
}

вместо

void DoSomething(Bar bar)
{
   Console.WriteLine(bar.Foo);
   Console.WriteLine(bar);
}

Есть ли способ достичь этого с RavenDb?

Я понимаю, что RavenDb (и базы данных документов в целом) продвигают другой способ размышления о работе с сущностями, если это только тот случай, когда я слишком долго трачу в реляционном / нормализованном мире, может кто-нибудь объяснить, какЯ должен структурировать свой код в более дБ документа?

1 Ответ

8 голосов
/ 27 мая 2011

Вы, безусловно, можете сделать это:

class Bar
{
   Foo Foo { get; set; }
}

Вам просто нужно убедиться, что вы установили:

documentStore.Conventions.CustomizeJsonSerializer =
      serializer => serializer.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
...