Я тестирую проект функции Azure в локальной среде, используя Npgsql в качестве драйвера для postgres, строки подключения, определенные в local.settings.json вместо App.config.
Когда я устанавливаю Npgsql в качестве поставщика Entity Framework и устанавливаю фабрику соединений по умолчанию на NpgsqlConnectionFactory
, чтение DbSet
в DbContext
приводит к следующей ошибке:
Основной поставщик не удалось открыть. -> При установке соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server) -> система не может найти указанный файл
Вот мой DbContext
:
public partial class PostgresContext : DbContext
{
public PostgresContext() : base("postgres-key")
{
}
}
public class NpgSqlConfiguration:DbConfiguration
{
public NpgSqlConfiguration()
{
SetProviderFactory("Npgsql",NpgsqlFactory.Instance);
SetDefaultConnectionFactory(new NpgsqlConnectionFactory());
}
}
Вот моя строка подключения:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "",
"AzureWebJobsDashboard": ""
},
"ConnectionStrings": {
"postgres-key": "Server=127.0.0.1;Port=5432;Database=postgres;User Id=postgres;Password=postgres;"
}
}
Я попытался заменить раздел «Сервер» строки подключения на localhost, проверить, работает ли служба postgres 64, проверил, открыт ли порт 5432, проверить, работает ли Entity Framework с local.settings.json
.
Единственный способ продвинуться вперед - это создать собственный NpgsqlConnection
для запросов к базе данных вручную. Я стараюсь, насколько это возможно, избегать плана B и буду признателен за любую помощь в работе ORM.
Обновление: использование .net framework 4.7.1