6

私は最近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(および一般的なドキュメントデータベース)は、エンティティの処理について異なる考え方を促進していることを認識しています。これが、リレーショナル/正規化された世界で長時間過ごしている場合は、コードの構造化方法を誰かが説明できます。より多くのドキュメントデータベースの方法で?

4

1 に答える 1

8

あなたは確かにそれを行うことができます:

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

次の設定を確認する必要があります。

documentStore.Conventions.CustomizeJsonSerializer =
      serializer => serializer.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
于 2011-05-27T07:41:00.673 に答える