2011-05-26 108 views
6

我最近一直在玩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(和一般的文檔數據庫)促進了一種處理實體的不同思維方式,如果這只是我在關係/規範化世界中花費太長時間的情況,任何人都可以解釋我應該如何以更多文檔數據庫的方式構建我的代碼?

+1

也許會更容易些,如果你想在短說明你所要做的。瞭解你的BL可能會幫助我們想出一個更適合RavenDB的實體結構 – synhershko 2011-05-26 15:36:32

回答

8

你當然可以這樣做:

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

你只需要確保您設置:

documentStore.Conventions.CustomizeJsonSerializer = 
     serializer => serializer.ReferenceLoopHandling = ReferenceLoopHandling.Serialize; 
相關問題