我想使用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数据库。