2011-05-26 20 views
6

में एक मूल्य ऑब्जेक्ट्स पैरेंट इकाई ऑब्जेक्ट का संदर्भ दें, मैं हाल ही में रावेनडीबी के साथ खेल रहा हूं और कुछ ऐसा है जो मुझे थोड़ा परेशान कर रहा है।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 साथ इस लक्ष्य को हासिल करने के लिए है ?

मुझे एहसास है कि रावेनडीबी (और सामान्य रूप से दस्तावेज़ डेटाबेस) संस्थाओं से निपटने के बारे में सोचने के एक अलग तरीके को बढ़ावा देते हैं, अगर यह सिर्फ मेरे संबंध में/सामान्यीकृत दुनिया में बहुत लंबा खर्च करने का मामला है, तो क्या कोई यह समझा सकता है कि मुझे कैसे करना चाहिए मेरे कोड को एक और दस्तावेज़ डीबी तरीके से संरचित करना?

+1

शायद यह आसान होगा यदि आप संक्षेप में वर्णन होता तुम क्या करने कोशिश कर रहे हैं । अपने बीएल को समझने से हमें एक इकाई संरचना के साथ आने में मदद मिल सकती है जो रावेनडीबी के लिए उपयुक्त है – synhershko

उत्तर

8

आप निश्चित रूप से ऐसा कर सकते हैं:

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

तुम बस यह सुनिश्चित करें कि आप सेट की जरूरत है:

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