npgsql - 停止使用 'template1' 数据库
npgsql - stop using 'template1' database
我想在 entity framework(无论哪个版本)中使用 elephantsql 数据库。我在网上找到了关于 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; }
}
我创建了 class 来表示 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 这是一个我可以给自己一些权限的文件。
我的连接字符串:
<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(空);
我假设它将停止尝试创建新数据库。它并没有阻止这种行为。
3) 我尝试 enable/disable SSL。
4) 我将 entity framework 与 npgsql 一起从 5.0 更改为 6.0。
对于所有好奇的人:
- 为什么 elephantsql 和 postgresql visual studio? - 大学项目。老实说,我想使用 mssql,但我不能。只有 progresql.
编辑:我尝试阅读许多 questions/tutorials/bug 跟踪器 stories/etc。没有找到我的答案。
Edit2:对不起,我忘了。 ElephantSQL 是一个托管在云端的 postgresql 数据库。
我做到了:)。
如果有人遇到与我相同的问题,那么您需要将此添加到您的连接字符串中:
EntityAdminDatabase=[DATABASE_NAME]
然后它将停止使用'template1'。
更新 npgsql dll 并在连接字符串中添加 EntityAdminDatabase=[DATABASE_NAME] 对我有用。
谢谢
我想在 entity framework(无论哪个版本)中使用 elephantsql 数据库。我在网上找到了关于 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; }
}
我创建了 class 来表示 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 这是一个我可以给自己一些权限的文件。
我的连接字符串:
<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(空); 我假设它将停止尝试创建新数据库。它并没有阻止这种行为。
3) 我尝试 enable/disable SSL。
4) 我将 entity framework 与 npgsql 一起从 5.0 更改为 6.0。
对于所有好奇的人: - 为什么 elephantsql 和 postgresql visual studio? - 大学项目。老实说,我想使用 mssql,但我不能。只有 progresql.
编辑:我尝试阅读许多 questions/tutorials/bug 跟踪器 stories/etc。没有找到我的答案。 Edit2:对不起,我忘了。 ElephantSQL 是一个托管在云端的 postgresql 数据库。
我做到了:)。
如果有人遇到与我相同的问题,那么您需要将此添加到您的连接字符串中:
EntityAdminDatabase=[DATABASE_NAME]
然后它将停止使用'template1'。
更新 npgsql dll 并在连接字符串中添加 EntityAdminDatabase=[DATABASE_NAME] 对我有用。
谢谢