Проблема Npgsql C # с App.Config PostgreSQL Entity Framework 6 - PullRequest
0 голосов
/ 21 марта 2019

Только что сделал новое консольное приложение для тестовой базы данных. В прошлом мои проекты работали нормально, но теперь у меня есть проблема, которую я не могу решить. Я создал App.config вручную (VStudio не генерировал его). Я использовал настройки от Эта ссылка . В прошлом я работал с MSSql и SQLite, и он отлично работает. Но моя попытка с Postgresql не работает. Можете ли вы сказать мне, что я должен делать?

Мой App.config Файл:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <!-- ... -->

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

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

  <connectionStrings>
    <add name="AppDatabaseConnectionString"
         connectionString="Server=localhost;Database=photo_service;Port=5432;Password=postgres;User Id=postgres"
         providerName="Npgsql" />
  </connectionStrings>

</configuration>

Моя База данных приложений: контекст и класс Пользователь

class AppDatabase : DbContext
{
    private readonly string schema;
    public AppDatabase(string schema) : base("AppDatabaseConnectionString")
    {
        this.schema = schema;
    }

    public DbSet<User> Users { get; set; }

    protected override void OnModelCreating(DbModelBuilder builder)
    {
         builder.HasDefaultSchema(this.schema);
         base.OnModelCreating(builder);
    }


    }

class User
 {
    public int id { get; set; }
    public string name { get; set; }
    public string number { get; set; }
 }

И, наконец, моя инициализация запроса postgres:

var db = new AppDatabase("Users");
using (var database = new AppDatabase("User"))
    {
        var users = database.Users.First(user => user.name == "Blah blah blah");
    }

все это дает мне ошибку:

Unable to determine the provider name for provider factory of type 
'System.Data.SqlClient.SqlClientFactory'. Make sure that the ADO.NET provider is 
installed or registered in the application config.'

1 Ответ

0 голосов
/ 21 марта 2019

Хорошо, решено.Я создал ConsoleApp .NET Framework вместо ConsoleApp .NET Core, как говорит github

EF6 (пока) не работает на .NET Core - см.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...