2011-08-13 4 views
5

मैं एक छवि साइट बनाने पर काम कर रहा हूँ और मैं सोच रहा हूँ कि कैसे मैं Sql भंडार करने के लिए मेरे Linq में बनाएं/अपडेट तरीकों की संरचना करना चाहिए?आपको रिपोजिटरी पैटर्न में माता-पिता और बाल संस्थाओं को कैसे संभालना चाहिए?

public class Image 
{ 
    public int ID { get; set; } 
    public int OwnerId { get; set; } 
    public string Url { get; set; } 
    public IEnumerable<Tag> Tags { get; set; } 
} 

मैं निम्न तालिकाओं है:

मैं एक फोटो इकाई इस तरह संरचित है है छवियाँ, टैग, ImageTag

अब, मैं जब मैं में मेरी CreateImage विधि कॉल सोच रहा हूँ मेरी ImageRepository, मैं भी टैग तालिका में टैग बनाने की जानी चाहिए और ImageTag तालिका में मैपिंग बनाने?

इसी तरह, जब मैं अपडेट इमेज को कॉल करता हूं, तो मुझे यह जांचना चाहिए कि टैग बदल गए हैं या नहीं, और यदि वे छविटाग तालिका में प्रविष्टियों को हटा रहे हैं और अलग-अलग जोड़ रहे हैं (साथ ही टैग तालिका में नए टैग जोड़ना) ?

या इन उपयोग के मामलों की दोनों एक अलग भंडार कॉल में उसका क्या होगा?

असल में, यह कैसे माता पिता/बच्चे, एक-से-अनेक संबंध आमतौर पर एसक्यूएल भंडार करने के लिए एक विशिष्ट LINQ में नियंत्रित किया जाता है?

उत्तर

2

मैं कहूंगा कि यह अपने मॉडल में संस्थाओं के बीच संबंधों को समझने के लिए भंडार की जिम्मेदारी नहीं है। सब के बाद, यदि आप जिस तरह से आप अपने डेटा जारी रहती है बदलने के लिए थे (उदाहरण के लिए नो-एसक्यूएल समाधान के लिए, या यहां तक ​​कि अगर तुम सिर्फ अपने डाटाबेस स्कीमा बदल), आपके संस्थाओं और अपने मॉडल परिवर्तन नहीं होना चाहिए।

तो आपकी सबसे अच्छी शर्त अलग भंडार कॉल है, और कॉल की एक इकाई के अंदर कॉल लपेटें। (ए Unit of Work मूल रूप से एक सारणीबद्ध लेनदेन है)।

काम की आपकी इकाई और भंडार में विभिन्न कॉल भंडार के ऊपर अमूर्तता की एक परत होगी। मैं आपके बाकी मॉडल को नहीं जानता, ताकि यह अलग-अलग चीजें हो। यह छवि वस्तु पर एक विधि हो सकती है। आपके पास Mediator हो सकता है। या, यदि आप इसे एक डीडीडी परिप्रेक्ष्य से, एक डोमेन सेवा से आ रहे हैं।

चीयर्स।

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