2013-11-25 7 views
6

मैं npgsql 12 और ef6 की संकर के बारे में मेरे मालिक के लिए एक छोटा सा POC बनाने के लिए कोशिश कर रहा हूँ, दृश्य स्टूडियो पर एक नई परियोजना बनाई गई एक नमूना डेटाबेस इसी वर्गों बनाया है और dbcontext बनाया फिर भी, जब भी मैं कोशिश और एफई का उपयोग डेटाबेस मैं folowing त्रुटि प्राप्त तक पहुँचने के लिए:npgsql 12 और ef 6 का उपयोग करके - क्या कोई इसके साथ सफल रहा है?

The 'Instance' member of the Entity Framework provider type 'Npgsql.NpgsqlFactory, Npgsql, Version=2.0.12.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7' did not return an object that inherits from 'System.Data.Entity.Core.Common.DbProviderServices'. Entity Framework providers must inherit from this class and the 'Instance' member must return the singleton instance of the provider. This may be because the provider does not support Entity Framework 6 or later; see http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

मुझे पता है कि यह अब http://fxjr.blogspot.co.il/2013/06/initial-ef-6-support-added-to-npgsql.html

पिछले कुछ समय से समर्थन किया जाना चाहिए लेकिन मैं यह काम करने के लिए नहीं कर पा रहे, मेरा ऐप.सी onfig फ़ाइल इस तरह दिखता है:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http:// go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework"  type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework,  Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"  requirePermission="false" /> 
    <!--<section name="entityFramework" type="Npgsql.NpgsqlFactory, Npgsql,  Version=2.0.12.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />--> 
    </configSections> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
    <entityFramework> 
    <defaultConnectionFactory type="Npgsql.NpgsqlFactory, Npgsql"> 
     <parameters> 
     <parameter value="v11.0" /> 
     </parameters> 
    </defaultConnectionFactory> 
    <providers> 
     <provider invariantName="System.Data.SqlClient"  type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
     <provider invariantName="Npgsql" type="Npgsql.NpgsqlFactory, Npgsql" /> 
    </providers> 
    </entityFramework> 
    <system.data> 
    <DbProviderFactories> 
     <add name="Npgsql Data Provider" 
      invariant="Npgsql" 
      description="Data Provider for PostgreSQL" 
      type="Npgsql.NpgsqlFactory, Npgsql" /> 
    </DbProviderFactories> 
    </system.data> 
    <connectionStrings> 
    <add name="CoolestPGSoft" 
      connectionString="Server=127.0.0.1;Port=5432;Database=CoolestPGSoft;User Id=postgres;Password=********;" 
      providerName="Npgsql" /> 
    </connectionStrings> 
</configuration> 

किसी भी मदद की सराहना की होगी!

उत्तर

3

अब यह केवल Npgsql http://pgfoundry.org/frs/download.php/3494/Npgsql2.0.13.91-bin-ms.net4.5Ef6.zip के अंतिम बीटा संस्करण के साथ काम करता है और

<provider invariantName="Npgsql" type="Npgsql.NpgsqlFactory, Npgsql" /> 

को
<provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql" /> 
+0

मुझे इसे समझने में थोड़ी देर लग गई - पैकेज प्रबंधक कंसोल में जाना था और "इंस्टॉल-पैकेज npgsql -Pre" का उपयोग करना था, di डी कि इकाई-ढांचे पर, पुष्टि करने के लिए धन्यवाद कि मुझे केवल npgsql के लिए किया जाना चाहिए था। –

+2

ज़िप फ़ाइल से उस एनजीपीएसक्यूएल का उपयोग करना (2.0.13.9 1) वास्तव में डीबीप्रोवाइडर अपवाद नहीं फेंकता है लेकिन यह प्रश्नों पर कई अन्य अजीब अपवाद फेंकता है। ईएफ 6 और एनजीपीएसक्ल 2.0.14.3 अब -pre का उपयोग किए बिना nuget पर उपलब्ध हैं। लेकिन मैं अभी भी ऊपर वर्णित एक ही अपवाद पर वापस आ गया। दोनों ईएफ और एनजीपीएसक्लबल स्थिर संस्करण जारी किए गए हैं, एक समाधान होना चाहिए! –

3

मैं निम्नलिखित काम करने के लिए यह EF6 और Npgsql मिला आप को बदलना होगा:

Entity Framework 6 with Npgsql

PMC> Install-Package EntityFramework 
(should give you version 6) 

PMC> Install-Package Npgsql.EF6 -Pre 
(should give you 2.0.12-pre4) 

और इन App.config

<system.data> 
    <DbProviderFactories> 
     <add name="Npgsql Data Provider" 
      invariant="Npgsql" 
      description ="Data Provider for PostgreSQL" 
      type="Npgsql.NpgsqlFactory, Npgsql" /> 
    </DbProviderFactories> 
    </system.data> 

    <connectionStrings> 
    <add name="PostgreSQL" 
     providerName="Npgsql" 
     connectionString="Server=asdf;Port=5432;User Id=asdf;Password=asdf;Database=asdf;enlist=true" /> 
    </connectionStrings> 

    <entityFramework> 
    <providers> 
     <provider invariantName="Npgsql" 
       type="Npgsql.NpgsqlServices, Npgsql" /> 
    </providers> 
    </entityFramework> 
1

में जाने यह एक टेम्पलेट App.config जो आप एक प्रारंभिक बिंदु के रूप में उपयोग कर सकते हैं।

<xml version="1.0" encoding="utf-8"?> 
    <configuration> 
     <configSections> 
     <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
     </configSections> 
     <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
     </startup> 
     <entityFramework> 
     <providers> 
      <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql.EntityFramework"></provider> 
     </providers> 
     <defaultConnectionFactory type="Npgsql.NpgsqlFactory, Npgsql" /> 
     </entityFramework> 
     <system.data> 
     <DbProviderFactories> 
      <remove invariant="Npgsql" /> 
      <add name="Npgsql Data Provider" invariant="Npgsql" support="FF" description=".Net Framework Data Provider for Postgresql" type="Npgsql.NpgsqlFactory, Npgsql" /> 
     </DbProviderFactories> 
     </system.data> 
    </configuration> 

ध्यान दें कि आप Npgsq.EntityFramework.dll 2.1.0 विधानसभा के साथ ही आवश्यकता होगी Npgsql 2.1.0 दोनों बीटा में हैं और आप उन्हें Nuget या http://downloads.npgsql.org पर या हमारे GitHub परियोजना पृष्ठ में पा सकते हैं: https://github.com/npgsql/Npgsql/releaseshttp://fxjr.blogspot.com.br/2014/02/using-entity-framework-6-with-npgsql-210.html

मुझे आशा है कि यह मदद करता है:

मैं सिर्फ इसके बारे में एक ब्लॉग पोस्ट में लिखा था।

1

यह कैसे मैं यह काम कर रहा हो गया है:

पहले पैकेज

स्थापित स्थापित करें-पैकेज Npgsql.EF6 -पूर्व

और उसके बाद web.config

में यह पंक्ति जोड़
<system.data> 
    <DbProviderFactories> 
    <remove invariant="Npgsql" /> 
    <add name="Npgsql Data Provider" invariant="Npgsql" support="FF"   description=".Net Framework Data Provider for Postgresql" type="Npgsql.NpgsqlFactory, Npgsql" /> 
    </DbProviderFactories> 
</system.data> 
संबंधित मुद्दे