2009-06-30 8 views
11

मैं SQL सर्वर 2000, 2005 और 2008 का उपयोग करने वाले किसी वेब एप्लिकेशन में एंटीटी फ्रेमवर्क का उपयोग कर रहा हूं। जब मैं कोई अन्य EDMX फ़ाइल बना देता हूं, 2008 (बनाए गए पहले एडीएमएक्स का संस्करण) मुझे error 0172: All SSDL artifacts must target the same provider. The Provider 'MyDatabase' is different from ' MyDatabase ' that was encountered earlier. प्राप्त होता है ऐसा लगता है कि कनेक्शन में कहीं भी कनेक्शन 2008 के डेटास्टोर के लिए तारित होता है और जब यह एसएसडीएल फ़ाइल की जांच करता है और एक अलग प्रदाता मैनेजमेंट टोकन मान देखता है तो यह इस त्रुटि को फेंक देता है। मैं निराश से थोड़ा अधिक हूँ। कल्पना करना मुश्किल है कि ईएफ केवल प्रति आवेदन एसक्यूएल सर्वर के एक संस्करण के साथ काम करेगा। मुझे पूरा यकीन है कि एक सेटिंग या कामकाज होना चाहिए। क्या किसी के पास एक ही वेब एप्लिकेशन के भीतर SQL सर्वर और इकाई फ्रेमवर्क के विभिन्न संस्करणों का उपयोग करने का समाधान है?एकल एएसपी.NET अनुप्रयोग में एंटीटी फ्रेमवर्क का उपयोग कर SQL सर्वर के एकाधिक संस्करण

+0

उल्लेख करने के महत्व का एक आइटम यह है कि मैं एसक्यूएल 2000 से एसक्यूएल 2008 के माइग्रेशन के बीच में हूं और कनेक्शन स्ट्रिंग बदल चुका हूं और "एसएसडीएल को सभी संशोधित करने के लिए" डेटाबेस से अद्यतन मॉडल निष्पादित किया है ऐप काम करता है ProviderManifestToken = "2005" का उपयोग करें। –

+0

मैं भी इस समस्या का जवाब ढूंढ रहा हूं। अब तक मिले एकमात्र प्रासंगिक Google परिणाम किसी भी गहराई में नहीं जाते हैं। – Cogwheel

उत्तर

24

मैं प्रत्येक edmx को एक अलग असेंबली में डालकर इसे पूरा करने में सक्षम था। तो कनेक्शन स्ट्रिंग में, की जगह सभी res://*/...res://NameOfAssembly/... साथ

मैं भी दो इकाई मॉडलों के बीच मिलती है (दावों के विपरीत मैं अन्य स्रोतों में पाया) प्रदर्शन कर सकते हैं, जैसे:

var oneDb = new Entities2000(); 
var otherDb = new Entities2005(); 

var results = from one in oneDb.SomeSet 
       join other in otherDb.OtherSet 
        on one.Property equals other.Property 
       select new { 
        SomeProp = one.SomeProp, 
        OtherProp = other.OtherProp 
       }; 
+0

मुझे लगता है कि यह कहां काम करेगा। जिस मुद्दे पर मैं देख रहा था वह मेरे पर्यावरण में क्यों काम नहीं कर रहा था। उस समय के आसपास एकमात्र काम सभी प्रदाताManifestToken को एक ही संस्करण में सेट करना था। इस समय से मैंने सभी डीबीएस को एमएसएसएलएल 2008 में माइग्रेट कर दिया है। तो यह मेरे मूल प्रश्न का उत्तर क्यों नहीं दे सकता है, यह एक स्वीकार्य कामकाज है। –

+0

मुझे एक ही समस्या थी। फिर मैंने 'कोगव्हील - मैथ्यू ऑरलैंडो' सुझाव में वर्णित सभी को लागू किया और यह एसक्यूएल सर्वर 2005 और 2008 दोनों के लिए सही काम करता है। नोट: मैंने अलग-अलग नाम के साथ एसक्यूएल 2008 तक डेटा एक्सेस के लिए एक नई परियोजना बनाई है और फिर पहले से सभी सामग्री कॉपी की है और संबंधित एसक्यूएल संस्करण के लिए 'प्रदाता मेनिफेस्ट टोकन' तय किया और फिर दूसरे प्रोजेक्ट में नेमस्पेस को प्रतिस्थापित किया - नए असेंबली नाम के अनुसार (पता नहीं है कि यह आवश्यक था)। और अब मैं खुश हूँ। – mastak

+0

कोड का उपयोग करते समय इसे कैसे करें इस पर कोई विचार है? –

5

यह लिंक मुझे मदद की SQL सर्वर 2005 और 2008 में कोई अंतर होने पर समस्या को हल करने के लिए। http://kkryczka.wordpress.com/2011/01/03/all-ssdl-artifacts-must-target-the-same-provider-the-providermanifesttoken-2008-is-different-from-2005-that-was-encountered-earlier/

.edmx फ़ाइल पर राइट क्लिक करें और XML Editor के साथ खोलें का चयन करें। ओपन इकाई की रूपरेखा .edmx फ़ाइल:

बदलें 2008 तक ProviderManifestToken:

माइक्रोसॉफ्ट के लिए अपने एक ज्ञात समस्या की तरह लग रहा।

+0

धन्यवाद आदमी। मैं वास्तव में इस के साथ संघर्ष किया। एक और डेवलपर एक अलग प्रदाता के साथ हमारी परियोजना में जोड़ रहा है। अच्छा लेख –

+0

जो मेरे मामले में मिला वह था, हमारे पास एक समाधान में 3 परियोजनाएं थीं, और हमने प्रोजेक्ट ए में से एक में प्रदाता मेनिफेस्ट टोकन बदल दिया है, और इसने मुझे एक ही समाधान से प्रोजेक्ट बी को चलाने की अनुमति नहीं दी। – franklins

+0

मेरे मामले में मुझे 2008 से 2012 को बदलना था और फ़ाइल के निचले हिस्से में आपको यह पता चला था: । इसे गलत में बदलें और यह काम किया। – Martin

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