我想在实体框架中使用elephantsql数据库(无论哪个版本)。我在互联网上找到了关于npgsql的教程,它可以帮助我连接这两项技术。
我创建了一个代表来自DB的对象的对象:
[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).
我很不知道如何改变这一点。我将它改为&#39; jnwnqqog&#39;,因为它是我在elephantSQL的数据库。但我不知道。
2)我已经习惯了 Database.SetInitializer(NULL); 我以为它会停止尝试创建新的数据库。它没有阻止这种行为。
3)我尝试启用/禁用SSL。
4)我将实体框架从5.0更改为6.0以及npgsql。
对于所有好奇的人: 为什么elephantsql和postgresql与visual studio? - 大学项目。老实说,我想使用mssql,但我不能。只有progresql。
编辑:我试图阅读许多问题/教程/错误跟踪器故事等。没有找到我的答案。 编辑2:对不起,我忘记了。 ElephantSQL是一个托管在云端的postgresql数据库。
答案 0 :(得分:5)
我做到了:)。
如果有人遇到与我相同的问题,那么您需要将其添加到您的连接字符串中:
EntityAdminDatabase=[DATABASE_NAME]
然后它将停止使用'template1'。
答案 1 :(得分:2)
更新npgsql dll并在连接字符串中添加EntityAdminDatabase = [DATABASE_NAME]为我工作。
感谢的