2013-11-25 1 views
6

Я пытаюсь создать небольшую POC для моего босса о гибриде npgsql 12 и EF6, создал новый проект по визуальной студии создал базу данных созданы соответствующие классы и 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

однако я не могу заставить его работать, мой App.C Файл 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

Принял некоторое время, чтобы выяснить это сам - пришлось пойти в консоль менеджера пакетов и использовать «Install-Package npgsql -Pre», также di d что в сущности-рамках, спасибо за подтверждение, я должен был сделать это только для npgsql. –

+2

Использование этого NpgSql из Zip-файла здесь (2.0.13.91) Действительно не бросает исключение DbProvider, но оно выдает несколько других странных исключений в запросах. EF6 и NpgSql 2.0.14.3 Теперь доступны для nuget без использования -pre. Но я все еще вернусь к тому же исключению, о котором говорилось выше. Выпущены как стабильные версии EF, так и NpgSql, должно быть решение! –

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/releases.

Я просто написал в блоге об этом: http://fxjr.blogspot.com.br/2014/02/using-entity-framework-6-with-npgsql-210.html

Я надеюсь, что это помогает.

1

Это, как я получил это работает:

Сначала установите пакет

Install-Package Npgsql.EF6 -Pre

И после этого добавьте эту строку в 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> 

 Смежные вопросы

  • Нет связанных вопросов^_^