2010-03-09 13 views
6

कोई भी इस बारे में मेरी पहली प्रश्न प्यार करता था: Creating Entity Framework objects with Unity for Unit of Work/Repository patternएकता ढांचे पुन: उपयोग उदाहरण

तो मैं कुछ आप गिरने सो/इच्छा से जीने के लिए खोने के बिना पढ़ सकते हैं करने के लिए इसे अलग तरीके से व्यक्त करने के लिए प्रबंधित किया है।

मैं एक वस्तु बना रहा हूं, DataAccessLayer, कि निर्माता में 2 इंटरफेस लेता है: IUnitOfWork, और IRealtimeRepository:

public DataAccessLayer(IUnitOfWork unitOfWork, 
         IRealtimeRepository realTimeRepository) 
{ 
    this.unitOfWork = unitOfWork; 
    this.realTimeRepository = realTimeRepository; 
} 

अब, IRealtimeRepository के कार्यान्वयन के लिए निर्माता भी एक IUnitOfWork पैरामीटर लेता है:

public DemoRepository(IUnitOfWork unitOfWork) 
{ 
    this.unitOfWork = unitOfWork; 
} 

एकता कंटेनर सेटअप में, मैं तो दो कार्यान्वयन जोड़ें:

container.RegisterType<IUnitOfWork, communergyEntities>(); 
container.RegisterType<IRealtimeRepository, DemoRepository>(); 

क्या होता है कि एकता DemoRepository निर्माता

इस रूप में कार्य पद्धति की इकाई के लिए है के लिए IUnitOfWork (वास्तव में एक इकाई की रूपरेखा डेटा संदर्भ), DataAccessLayer निर्माता के लिए एक, एक के 2 नए उदाहरणों बनाता है, यह बहुत महत्वपूर्ण है कि एक ही उदाहरण का पुन: उपयोग किया जाता है। कोई विचार? मैं देख रहा हूँ इसी तरह के सवाल से पहले कहा गया है, लेकिन

उत्तर

6

स्वीकार नहीं आप एकता बता उपयोग करने के लिए एक ContainerControlledLifetimeManager कर सकते हैं:,

container.RegisterType<IUnitOfWork, communergyEntities>(new ContainerControlledLifetimeManager()); 

वैकल्पिक रूप से आप RegisterInstance बजाय RegisterType का उपयोग कर सकते हैं, हालांकि आप समय में इसे बनाने के लिए है पंजीकरण:

container.RegisterInstance<IUnitOfWork>(new CommunergyEntities()); 
+0

c'est magnifique! Merci महाशय! – TobyEvans

+0

मेरी खुशी - आपको लगता है कि दस्तावेज कहीं भी सिंगलटन का उल्लेख कर सकता है, है ना? :) –

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