繁体   English   中英

App.Config PostgreSQL实体框架6的Npgsql C#问题

[英]Npgsql C# problem with App.Config PostgreSQL Entity Framework 6

刚为测试数据库制作了新的Console App。 过去每次在我的项目中工作都很好,但现在我遇到了无法解决的问题。 我创建了App.config manualy(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>

我的AppDatabase:上下文类用户

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.'

好的,解决了。 github说,我创建了ConsoleApp .NET Framework而不是ConsoleApp .NET Core

EF6(尚未)在.NET Core上运行 - 请参阅

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM