2011-05-26 16 views
6

最近私はRavenDBと遊んでいましたが、少し迷惑をかけることがあります。RavenDbの値オブジェクトの親エンティティオブジェクトを参照してください

私は、一連の値オブジェクトを持つエンティティオブジェクトを持っています。

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

私はメソッド/クラスに型バーのオブジェクトを渡したいが、いくつかの点で親エンティティに戻って参照したいときの回数があります。 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(および一般的なドキュメントデータベース)は、エンティティを扱うことについて異なる考え方を推進しています。これは、リレーショナル/正規化された世界で長すぎる時間を費やしているケースであれば、より多くのドキュメントのdb方法で自分のコードを構造化していますか?

+1

あなたが何をしようとする短期的に記述したい場合は、おそらくそれが容易になるだろう。あなたのBLを理解することは、RavenDBにより適したエンティティ構造を思いつくのに役立ちます – synhershko

答えて

8

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

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

あなたはちょうどあなたが設定されていることを確認する必要があります。

documentStore.Conventions.CustomizeJsonSerializer = 
     serializer => serializer.ReferenceLoopHandling = ReferenceLoopHandling.Serialize; 
関連する問題