मैं एक रिपॉजिटरी लागू करने जा रहा हूं, और मैं UOW पैटर्न का उपयोग करना चाहूंगा क्योंकि रिपॉजिटरी का उपभोक्ता कई ऑपरेशन कर सकता है, और मैं उन्हें एक ही बार में कमिट करना चाहता हूं।
मामले के बारे में कई लेखों को पढ़ने के बाद, मुझे अभी भी यह नहीं पता है कि इस दो तत्वों को कैसे संबंधित किया जाए, लेख के आधार पर यह एक तरह से यू में किया जा रहा है।
कभी-कभी UOW रिपॉजिटरी के लिए कुछ आंतरिक होता है:
public class Repository
{
UnitOfWork _uow;
public Repository()
{
_uow = IoC.Get<UnitOfWork>();
}
public void Save(Entity e)
{
_uow.Track(e);
}
public void SubmittChanges()
{
SaveInStorage(_uow.GetChanges());
}
}
और कभी-कभी यह बाहरी होता है:
public class Repository
{
public void Save(Entity e, UnitOfWork uow)
{
uow.Track(e);
}
public void SubmittChanges(UnitOfWork uow)
{
SaveInStorage(uow.GetChanges());
}
}
अन्य समय, UOW है जिसे रिपॉजिटरी का संदर्भ दिया जाता है
public class UnitOfWork
{
Repository _repository;
public UnitOfWork(Repository repository)
{
_repository = repository;
}
public void Save(Entity e)
{
this.Track(e);
}
public void SubmittChanges()
{
_repository.Save(this.GetChanges());
}
}
ये दोनों तत्व कैसे संबंधित हैं? UOW उन तत्वों को ट्रैक करता है जिन्हें परिवर्तित किया जाना चाहिए, और रिपॉजिटरी में उन परिवर्तनों को जारी रखने के लिए तर्क शामिल हैं, लेकिन ... कौन कॉल करता है? क्या आखिरी मायने रखता है?
इसके अलावा, कौन कनेक्शन का प्रबंधन करता है? यदि रिपॉजिटरी में कई ऑपरेशन किए जाने हैं, तो मुझे लगता है कि एक ही कनेक्शन का उपयोग करना और यहां तक कि लेनदेन भी अधिक ध्वनि है, इसलिए हो सकता है कि कनेक्शन ऑब्जेक्ट को यूओओ के अंदर डाल दिया जाए और यह रिपॉजिटरी के अंदर एक के रूप में अच्छी तरह से समझ में आता है।
चियर्स