DI

6

के लिए नेवेन्टस्टोर घटकों की ऑब्जेक्ट्स संरचना मैं अपने मौजूदा प्रोजेक्ट में नेवेन्टस्टोर जोड़ रहा हूं और मैं DI का उपयोग कर रहा हूं।DI

मैं अपने एमवीसी नियंत्रक में इंजेक्शन CommonDomain.Persistence.EventStore.IRepository का उदाहरण लेना चाहता हूं। इस इंटरफ़ेस के The only implementationEventStoreRepository है।
यह कक्षा IConstructAggregates पर निर्भर करती है और only implementation I findAggregateFactory है जो परीक्षण परियोजना में स्थित आंतरिक के रूप में चिह्नित है और इसमें बहुत अजीब फ़ाइल नाम है।

क्या मुझे IRepository का उपयोग नहीं करना चाहिए? (इसे सार्वजनिक रूप से चिह्नित क्यों किया जाता है और किसी भी आंतरिक कोड से उपभोग नहीं किया जाता है?)
मैं नमूना प्रोजेक्ट here और IRepository पर जोड़ रहा हूं जो कुल योगों में हेरफेर करने के लिए उपयोग किया जाता है।

या मुझे अपने IConstructAggregates को लागू करना चाहिए?

उत्तर

3

मैं एक ही बात के साथ संघर्ष कर रहा हूँ, मुझे लगता है कि कम जवाब है:

आप स्नैपशॉट उपयोग नहीं कर रहे हैं, तो परीक्षण परियोजना में कार्यान्वयन ठीक काम करेगा। वास्तव में, अगर आपको स्नैपशॉट दिया गया तो मैं अपवाद फेंकने के लिए कुछ कोड जोड़ूंगा।

आप स्नैपशॉट का उपयोग कर रहे हैं, तो आप यहाँ वर्णित एक के अंत में एक दृष्टिकोण के समान का उपयोग करना चाहते हैं: http://williamverdolini.github.io/2014/08/20/cqrses-neventstore-snapshots/

अनिवार्य रूप से, मुद्दा यह है कि उद्देश्य यह है कि आप से लौटने होता है में पारित स्नैपशॉट के तुरंत बाद संस्करण में शुरू होने पर आईसीओस्ट्रक्चरएग्रेगेट्स को पर ईवेंट स्ट्रीम फिर से चलाया जाएगा।

बस एक अनुमान है, लेकिन मुझे लगता है कि इस कारण से "आधिकारिक तौर पर" CommonDomain में लागू नहीं किया जा सकता है:

  • आप समुच्चय है कि स्नैपशॉट का समर्थन है, तो आप वैसे भी उन पर GetSnapshot() लागू करने के लिए है, और आप एक IConstructAggregates कार्यान्वयन कि फिर से हाइड्रेट कर सकते हैं उन समुच्चय किसी भी तरह का निर्माण करना चाहते हैं (शायद एक ISupportSnapshots इंटरफ़ेस?)

  • यह है कि आप अपने डि कंटेनर का उपयोग करने के लिए सिर्फ Activator.CreateInstance<T>() की अपेक्षा अपनी सकल निर्माण करना चाहते हैं चाहते हैं संभव है।

कोड के इस स्निपेट ऐसा लगता है कि यहां परीक्षण परियोजना से AggregateFactory रूप में एक ही तर्क का उपयोग करता: - http://pastebin.com/cFESMiTz

+0

मुझे लगता है कि मैं सार्वजनिक रूप से समर्थित होने की नहीं इस वर्ग के लिए कारण मिल गया है: यह प्रतीत होता है कि अपूर्ण है और ठीक से परीक्षण नहीं किया गया है। मुझे इस भंडार के साथ कई प्रकार की समस्याएं आ रही हैं और पहले से ही एक बग-रिपोर्ट दायर की गई है: https://github.com/NEventStore/NEventStore/issues/376 – trailmax

+0

और नहीं, मेरे लिए कोई स्नैपशॉट नहीं है, लेकिन मुझे लगता है कि मेरे पास होगा वैसे भी इस वर्ग से बचने के लिए, क्योंकि मैं इसका उपयोग कर प्रमुख मुद्दों में ठोकर खा रहा हूं - ( – trailmax

+0

मुझे लगता है कि मैं geteventstore.com जैसे कुछ का उपयोग कर समाप्त कर रहा हूं और कॉमनडोमेन परियोजना के एक संशोधित संस्करण का उपयोग कर रहा हूं। मुझे कुछ चीजों को मेरी स्थिति के लिए काम करने के लिए समायोजन की थोड़ी सी आवश्यकता है। –

संबंधित मुद्दे