ओरेकल ओडीपी.Net इकाई फ्रेमवर्क 6 के साथ-इकाई फ्रेमवर्क डेटाबेस संगत प्रदाता नहीं मिला




oracle entity-framework (4)

देर से इस धागे में शामिल हो रही है। वीएस2017 में अपग्रेड किए गए कुछ लोग (हमारी टीम में शेष अभी भी वीएस2015 का उपयोग कर रहे हैं और वीएस2017 में अपग्रेड करने की योजना बना रहे हैं)। हमारी परियोजनाओं में से एक स्थानीय स्तर पर संदर्भित डीएलएस के माध्यम से Oracle.ManagedDataAccess.dll ver4.121.2.0 और Oracle.ManagedDataAccess.EntityFramework.dll ver6.121.2.0 का संदर्भ दे रहा था।

सभी dev-workstations में oracle-odac-drivers ver4.122.1.0 और ver6.122.1.0 स्थापित सिस्टम-व्यापी (जीएसी आदि) था।

इस प्रकार का सेटअप वीएस2015 के लिए ठीक काम कर रहा था लेकिन कुछ अजीब कारणों से यह वीएस2017 के लिए काम नहीं कर रहा था। वीएस2017 के लिए अपराधी यह था कि Oracle.ManagedDataAccess.dll और Oracle.ManagedDataAccess.EntityFramework.dll जहां हमारे एंट्री लेवल एएसपीनेट प्रोजेक्ट के आउटपुट फ़ोल्डर में कॉपी नहीं किया जा रहा है जब तक कि स्थानीय रूप से संदर्भित डीएलएस तक और जब तक ver4 को अपडेट नहीं किया जाता .121.2.0 और ver6.121.2.0।

हमारे पास इस सब में आगे देखने के लिए समय नहीं था लेकिन उपर्युक्त समाधान वीएस2017 के लिए काम किया था।

मैं एंटिटी फ्रेमवर्क 6 के साथ एक एमवीसी 5 वेब एप्लिकेशन बनाने की कोशिश कर रहा हूं जो ओरेकल डाटाबेस पर काम करता है, ओडीएसी 12 सी रिलीज 3 का उपयोग करने की कोशिश कर रहा हूं जिसमें एंटीटी फ्रेमवर्क 6 कोड फर्स्ट और कोड फर्स्ट माइग्रेशन के लिए समर्थन शामिल है; NuGet, .NET Framework 4.5.2; और ओडीपी.नेट, प्रबंधित ड्राइवर एक्सएमएल डीबी। के अनुसार

http://www.oracle.com/technetwork/topics/dotnet/whatsnew/index.html

मेरे पास वीएस 2013 सामुदायिक संस्करण अपडेट 4 है।

मैं पहले कोड के साथ ADO.Net इकाई डेटा मॉडल का उपयोग कर मॉडल जोड़ने की कोशिश कर रहा हूं।

मेरे पास निम्नलिखित Web.config में कॉन्फ़िगर किया गया है

    <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="Oracle.ManagedDataAccess.Client"
             type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />


  </configSections>

  <entityFramework>
    <contexts>
      <context type="Tamayz.Context.Default, Tamayz.Context">
        <databaseInitializer type="MyProject.Context.Config.ContextInitializer, MyProject.Context" />
      </context>
    </contexts>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="Oracle.ManagedDataAccess.Client" 
                type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </providers>
  </entityFramework>

मैंने एक संदर्भ के रूप में Oracle.ManagedDataAccess संस्करण 4.121.2.0 भी जोड़ा और समाधान का पुनर्निर्माण किया।

मैंने पहले कोड के साथ ADO.Net इकाई डेटा मॉडल का उपयोग करके मॉडल जोड़ने की कोशिश की। लेकिन विज़ार्ड की आखिरी स्क्रीन में निम्न संदेश प्राप्त हो रहा है:

आपका प्रोजेक्ट संदर्भ देता है कि इकाई ढांचे का नवीनतम संस्करण; हालांकि, इस संस्करण के साथ संगत एक इकाई फ्रेमवर्क डेटाबेस प्रदाता आपके कनेक्शन के लिए नहीं मिला ...

ईएफ 6 कोड के साथ पहले ओडीएसी का उपयोग करने में सक्षम होने के लिए मैं अपने आवेदन को सही तरीके से कैसे कॉन्फ़िगर कर सकता हूं?


बस पूरक होने के लिए, मैंने सब कुछ करने की कोशिश की है लेकिन मेरे मामले में इसे " डिफ़ॉल्ट कनेक्शन कनेक्शन " सेट करके हल किया गया था:

<entityFramework>
<defaultConnectionFactory type="Oracle.ManagedDataAccess.EntityFramework.OracleConnectionFactory, Oracle.ManagedDataAccess.EntityFramework">
</defaultConnectionFactory>
<providers>
  <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</providers>
</entityFramework>

यहां समाधान मिला: https://community.oracle.com/message/13114643#13114643

मुझे उम्मीद है कि यह किसी की मदद करता है ...



मैं अंत में ईएफ 6 के साथ ओडीपी का उपयोग करने में सक्षम था।

मैंने इसे काम करने के लिए निम्नलिखित किया: -

पहले ओडीएसी 12 सी रिलीज 3 स्थापित करना जिसमें एंटीटी फ्रेमवर्क 6 कोड फर्स्ट और कोड फर्स्ट माइग्रेशन के लिए समर्थन शामिल है; NuGet, .NET Framework 4.5.2; और ओडीपी.नेट, प्रबंधित ड्राइवर एक्सएमएल डीबी। के अनुसार

http://www.oracle.com/technetwork/topics/dotnet/whatsnew/index.html

मेरे प्रोजेक्ट संदर्भों में दो संदर्भ जोड़ना और वे हैं:

Oracle.ManagedDataAccess.dll

Oracle.ManagedDataAccess.EntityFramework.dll

पैकेज प्रबंधक कंसोल में निम्न आदेश चलाकर NuGet का उपयोग करके EF6.1.1 इंस्टॉल करना (आप इसे टूल-> NuGet पैकेज प्रबंधक -> पैकेज प्रबंधक कंसोल द्वारा दर्ज कर सकते हैं):

Install-Package EntityFramework -Version 6.1.1

और प्रदाता और वैध कनेक्शन स्ट्रिंग जोड़कर Oracle.ManagedDataAccess का उपयोग करने के लिए अपने web.config या web.config को संशोधित करें उदाहरण:

<configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="Oracle.ManagedDataAccess.Client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
  </configSections>
  <entityFramework>
    <contexts>
      <context type="App.Context.Default, App.Context">
        <databaseInitializer type="MyProject.Context.Config.ContextInitializer, MyProject.Context" />
      </context>
    </contexts>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <connectionStrings>
    <add name="Default" providerName="Oracle.ManagedDataAccess.Client" connectionString="DATA SOURCE=XE;USER ID=User" />
  </connectionStrings>

अपने आवेदन को x86 के रूप में पुनर्निर्माण करें, और ईएफ 6 का उपयोग शुरू करें, आप यह जांच सकते हैं कि यह कोड प्रथम का उपयोग कर ADO.Net Entity मॉडल का उपयोग कर मॉडल जोड़कर काम करता है या नहीं







odac