Я добавляю поддержку 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>
Я не понимаю, почему это исключение возбуждено. Я пробовал много настроек, но кто-то работает.
Обозреватель решений
удалите таблицу __MigrationHistory, если вы сначала используете код и создаете базу данных, используя миграцию
Установка инструментов Entity Framework 6 поможет решить вашу проблему.
Приветствия.
Для приложения MVC внутри Global.asax в методе Application_Start() в конце я помещаю строку:
Database.SetInitializer (нуль);
Это решило ту же проблему.