npgsql - 停止使用 'template1' 数据库

3

我想使用ElephantSQL数据库与Entity Framework(任何版本)一起使用。我在互联网上找到了有关npgsql的教程,可以帮助我连接这两种技术。

我创建了一个对象,该对象将表示来自数据库的对象:

[Table("typychorob", Schema = "public")]
public class TypChoroby
{
    public TypChoroby()
    {
    }

    [Key, Column("id"), DatabaseGenerated(DatabaseGeneratedOption.Identity), Required]
    public int ID { get; set; }

    [Column("nazwa"), MaxLength(50)]
    public string Nazwa { get; set; }
}

我创建了一个类来代表dBContext。Uzytkownik与TypChoroby几乎相同。

public class PrzychodniaContext : DbContext
{
    public DbSet<Uzytkownik> Uzytkownicy { get; set; }
    public DbSet<TypChoroby> TypyChorob { get; set; }

    public PrzychodniaContext() : base()
    {
    }
}

我尝试以以下方式使用这些东西:
using (var context = new PrzychodniaContext())
        {
            context.Database.Log = post;
            var chorobska = context.TypyChorob.ToList();
        }

这通常会导致出现以下错误:
{"28000: no pg_hba.conf entry for host \"178.37.126.100\", user \"jnwnqqog\", database \"template1\", SSL off"}

这是elephantSql的最简单计划,因此我无法编辑pg_hba.conf文件,该文件可以为自己授予一些特权。

我的ConnectionString:

<add name="PrzychodniaContext" connectionString="Server=YouDontWantToKnowButYouKnow;Database=jnwnqqog;User Id=jnwnqqog;Password=YouDontWantToKnow;MAXPOOLSIZE=5;" providerName="Npgsql" />

我能做什么?

1)首先我知道发生了什么。在npgsql的文档中,我找到了关于创建数据库命令的说明:

template
The name of the template from which to create the new database, or DEFAULT to use the default template (template1).

说实话我不知道该如何更改那个。我认为将其更改为“jnwnqqog”会很好,因为这是我的ElephantSQL数据库。但我不知道怎么做。

2) 我使用了Database.SetInitializer(null); 我以为它会停止尝试创建新的数据库,但它并没有停止这种行为。

3) 我尝试启用/禁用SSL。

4) 我将Entity Framework从5.0更改为6.0,并且使用npgsql。

对于所有好奇的人: -为什么要使用ElephantSQL和Visual Studio的PostgreSQL? - 大学项目。老实说,我想使用MSSQL,但我不能。只能使用PostgreSQL。

编辑:我尝试阅读了许多问题/教程/错误跟踪器故事等,但没有找到答案。 编辑2:抱歉,我忘记了。 ElephantSQL是一个托管在云中的PostgreSQL数据库。


这个 "elephantSQL" 是什么东西? - user330315
ElephantSQL是一个托管在云端的PostgreSQL数据库。 - Shoter
2个回答

13

我做到了:).

如果有人遇到和我一样的问题,那么你需要将这个添加到你的连接字符串中:

EntityAdminDatabase=[DATABASE_NAME]

然后它将停止使用 'template1'。


哇,这非常有帮助,这个参数是从哪里来的? - SuperPoney

4
更新npgsql dll并在连接字符串中添加EntityAdminDatabase=[DATABASE_NAME]对我起作用。
谢谢。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接