2011-03-06 4 views
8

में मौजूदा डेटाैकेंटेक्स्ट एक्सेस करें मैं विधियों और गुणों के साथ आंशिक वर्ग में एक ईएफ इकाई का विस्तार करना चाहता हूं। मैंने इसे अक्सर किया है। लेकिन अब मुझे इस इकाई से अन्य इकाइयों के डेटा के साथ डेटा गठबंधन करने की आवश्यकता होगी। इसलिए इन प्रश्नों को बनाने के लिए मुझे इकाइयों ऑब्जेक्ट कॉन्टेक्स्ट (यदि संलग्न किया गया) तक पहुंचने में सक्षम होना चाहिए। क्या इसके अंदर से ऑब्जेक्ट ऑब्जेक्ट कॉन्टेक्स्ट प्राप्त करने का कोई तरीका है?इकाई फ्रेमवर्क 4: आंशिक इकाई वर्ग

Thanx!

+0

इस ध्वनि सही dosent के भीतर, आप व्याख्या कर सकते हैं क्यों यह आवश्यकता है डी? मेबी थर्म एक और तरीका है जहां आपको जाने की आवश्यकता है (शायद एक एसोसिएशन या जटिल प्रकार) – Menahem

उत्तर

2

इकाई से वर्तमान ObjectContext प्राप्त करने के लिए कोई भी तरीका नहीं है। EntityObject वर्ग और पीओसीओ प्रॉक्सी के आधार पर संस्थाएं आंतरिक रूप से ObjecContext का उपयोग करती हैं लेकिन वे इसका पर्दाफाश नहीं करती हैं।

अपनी संस्थाओं में इस तरह के डिप्नेडेंसी को खराब डिजाइन के रूप में माना जाता है, इसलिए आपको शायद यह समझाया जाना चाहिए कि आप क्या करने की कोशिश कर रहे हैं और हम अन्य (बेहतर) समाधान पा सकते हैं।

+0

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

+0

हालांकि मैं खराब डिजाइन के बारे में आपकी चिंता को समझता हूं .. :) मैं इसे व्यापार परत पर ले जा सकता हूं, लेकिन मुझे लगता है कि यह निम्न स्तर का अमूर्त होना चाहिए जो दृढ़ता परत में रहना चाहिए ... – SolarX

2

हालांकि यह अनुशंसित नहीं है, और मैं अपने आप को उसका उपयोग नहीं करते (के रूप में Ladislav ने कहा: बुरा डिजाइन):

http://blogs.msdn.com/b/alexj/archive/2009/06/08/tip-24-how-to-get-the-objectcontext-from-an-entity.aspx

एक्सटेंशन विधि:

public static ObjectContext GetContext( 
    this IEntityWithRelationships entity 
) 
{ 
    if (entity == null) 
     throw new ArgumentNullException("entity"); 

    var relationshipManager = entity.RelationshipManager; 

    var relatedEnd = relationshipManager.GetAllRelatedEnds() 
             .FirstOrDefault(); 

    if (relatedEnd == null) 
     throw new Exception("No relationships found"); 

    var query = relatedEnd.CreateSourceQuery() as ObjectQuery; 

    if (query == null) 
     throw new Exception("The Entity is Detached"); 

    return query.Context; 
}
, मैं एक समाधान पर ठोकर खाई

इकाई

var myContext = this.GetContext() as MyEntities;
+0

सीधे कोड उदाहरण दें उत्तर में, यदि संदर्भित स्रोत गायब हो जाता है। – Tracker1

+0

लेख के लेखक के अनुसार, यह काम नहीं करेगा अगर इकाई का कोई संबंध नहीं है। वैकल्पिक रूप से, यह किया जा सकता है [प्रतिबिंब के माध्यम से] (http://stackoverflow.com/a/26212071/111794)। –