Ссылка на родительский объект объектов значений в RavenDb

Недавно я играл с 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 (и базы данных документов в целом) продвигают другой способ мышления о работе с сущностями, если это просто тот случай, когда я слишком долго провожу в реляционном/нормализованном мире, может ли кто-нибудь объяснить, как я должен структурировать свой код более документально?


person James Hollingworth    schedule 26.05.2011    source источник
comment
Возможно, было бы проще, если бы вы вкратце описали, что вы пытаетесь сделать. Понимание вашего BL может помочь нам разработать структуру объекта, более подходящую для RavenDB.   -  person synhershko    schedule 26.05.2011


Ответы (1)


Вы, конечно, можете сделать это:

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

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

documentStore.Conventions.CustomizeJsonSerializer =
      serializer => serializer.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
person Ayende Rahien    schedule 27.05.2011