2012-04-19 13 views
8

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

एक पृष्ठ को अनलिंक किए गए दस्तावेज़ दिखाने के लिए डिज़ाइन किया गया है, ताकि उपयोगकर्ता एक समय में दस्तावेज़ों को एक साथ लिंक कर सकें। अपलोड प्रक्रिया के कुछ लोड परीक्षण करने के बाद, हमने पाया कि एएसपी.NET कार्यकर्ता प्रक्रिया की स्मृति पदचिह्न इस अनलिंक दस्तावेज़ पृष्ठ को लोड करते समय एक जीबी से अधिक हो गई है।

जांच के बाद, ऐसा लगता है कि एंटीटी फ्रेमवर्क सैकड़ों अनलिंक किए गए दस्तावेज़ों के लिए संपूर्ण दस्तावेज़ पंक्ति इकाई (फ़ाइलस्ट्रीम सहित, बाइट सरणी में परिवर्तित) लोड कर रहा है। मेरे भंडार वर्ग में, मैं मॉडल में कनवर्ट करते समय इस बाइट सरणी को सहेजता नहीं हूं, लेकिन तब तक बहुत देर हो चुकी है। ईएफ ने समय और स्मृति को बाइट सरणी को रिपोजिटरी क्लास प्रस्तुति में आवंटित करने के लिए बिताया है।

क्या कोई तरीका है कि मैं इस बाइट सरणी को लोड न करने के लिए ईएफ को बता सकता हूं जब तक कि मैं स्पष्ट रूप से इसके लिए नहीं पूछता?

+1

http://stackoverflow.com/a/3293286/782754 आलसी लोड करने के लिए एक संपत्ति चिह्नित करने के लिए संभव नहीं है, लेकिन आप अन्य अवधारणाओं का उपयोग कर सकते –

उत्तर

11

गैरीसन, आप "इकाई विभाजन" नामक एक सुविधा का उपयोग कर सकते हैं जहां आप दो संबंधित इकाइयों को एक ही तालिका में मैप करते हैं। तो पहली इकाई में आपके पास फाइलस्ट्रीम संपत्ति के अलावा सब कुछ होगा। दूसरी इकाई में आपके पास प्राथमिक कुंजी (पहली इकाई के समान) और फाइलस्ट्रीम संपत्ति होगी। एक बनाएं: अपने मॉडल में इकाइयों के बीच एक रिश्ता और फिर दोनों इकाइयों को एक ही तालिका में मैप करें। अब filestream के साथ इकाई संबंधित है और आप जरूरत के रूप में लोड या आलसी लोड कर सकते हैं। केवल नकारात्मक पक्ष यह है कि यह आपकी मुख्य इकाई की संपत्ति नहीं है, इसलिए आपको संबंधित इकाई और फिर संपत्ति पर नेविगेट करना होगा।

myEntity.MyRelatedEntity.TheFileStreamProperty

यहाँ एक old blog post मुझे लगता है कि लिखा दिखाता है कि कैसे ईडीएम डिज़ाइनर में यह करने के लिए है।

आप कोड FIrst के साथ एक ही मैपिंग भी प्राप्त कर सकते हैं। यहां एक एमएसडीएन आलेख है जिसे मैंने लिखा है जिसमें एक इकाई विभाजन लेख शामिल है। http://msdn.microsoft.com/en-us/data/hh272551

HTH जूली

+0

धन्यवाद, जूली। यह ठीक वही है जिसकी तलाश मुझे थी! –

+0

सुनने के लिए बहुत अच्छा! :) –

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