npgsql 2.1.3 и EF 6: не удалось определить версию хранилища; требуется действительное подключение к хранилищу или указание версии

1

Я добавляю поддержку EF 6 моему генератору sql для PostgreSQL: генератор миграции PostgreSQL

Я создал тестовый проект, чтобы попробовать, но когда я создаю новое соединение, return new NpgsqlConnection(); , он бросает это исключение для меня:

An exception of type 'System.NotSupportedException' occurred in EntityFramework.dll but was not handled in user code

Additional information: Unable to determine the provider name for provider factory of type 'Npgsql.NpgsqlFactory'. Make sure that the ADO.NET provider is installed or registered in the application config.

Следуйте инструкциям на официальном сайте Npgsql, я использую этот файл app.config:

<?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" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <entityFramework>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, Npgsql.EntityFramework"></provider>
    </providers>
    <defaultConnectionFactory type="Npgsql.NpgsqlConnectionFactory, 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>

Я не понимаю, почему это исключение возбуждено. Я пробовал много настроек, но кто-то работает.

  • 0
    Вы пытались добавить конфигурацию dbproviderfactories в файл machine.config? Например, когда я использую edmgen, он ищет конфигурацию в файле machine.config. Как вы используете свою программу? Вы можете опубликовать образец? Кстати, вы хотели бы добавить свой код в Npgsql? Таким образом, многие пользователи Npgsql могут извлечь выгоду из вашего кода. Кроме того, если вы не можете добавить код, дайте мне знать больше о вашем проекте, чтобы мы могли добавить ссылку на него в нашей документации.
  • 0
    Я пытался с machine.conf, но не работает.
Показать ещё 1 комментарий
Теги:
entity-framework
npgsql

4 ответа

18

Обозреватель решений

  1. Щелкните правой кнопкой мыши файл.edmx
  2. Открыть с..
  3. Редактор XML
  4. Изменить ProviderManifestToken = "XXXX" с 2008
  • 0
    Работал на меня. У меня был 2012 год и я перешел на 2008 год, который решил мою проблему Благодарю.
  • 0
    Хорошо знать причину и почему она до сих пор не устранена. Не уверен, что это проблема Telerik для меня.
Показать ещё 3 комментария
0

удалите таблицу __MigrationHistory, если вы сначала используете код и создаете базу данных, используя миграцию

0

Установка инструментов Entity Framework 6 поможет решить вашу проблему.

Приветствия.

0

Для приложения MVC внутри Global.asax в методе Application_Start() в конце я помещаю строку:

Database.SetInitializer (нуль);

Это решило ту же проблему.

  • 0
    Это исправило мою проблему с EF 5 (так как мы все еще используем EF v5 для некоторых проектов).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню