首页 > 解决方案 > PostgreSQL 和 Blazor .Net Core 3.1

问题描述

是否有关于如何使用当前版本的 Blazor (3.1) 和 PostgreSQL 的资源?

我尝试编写最简单的代码,只是为了查看它是否连接到数据库,但我收到以下错误消息:System.Net.Dns:GetHostByName is not supported on this platform

单击按钮将激活此代码:

async void connection()
{
  var connString = "Host=Server1;Username=postgres;Password=pass;Database=BlazorData";

  try
  {
    await using var conn = new NpgsqlConnection(connString);
    await conn.OpenAsync();
    errcheck = "success";
  }
  catch (Exception ex)
  {
     errcheck = ex.Message;
  }
}

标签: npgsqlblazor

解决方案


我解释了如何将它与实体框架一起使用。它可能会帮助你。在 startup.cs 中,ConfigureServices 方法有这个

services.AddEntityFrameworkNpgsql().AddDbContext<ApplicationDbContext>(options =>
                options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection")));

你需要通过nuget安装两个包

Npgsql.EntityFrameworkCore.PostgreSQL

Npgsql.EntityFrameworkCore.PostgreSQL.Design

在 appsetting.json 中确保你正确设置了连接字符串,下面是我的。如果数据库与数据库在同一台机器上,主机可以是 localhost

"DefaultConnection": "Host=192.168.16.240;Port=5432;Username=postgres;Password=mypassword;Database=mydatabase;"

基本上就是这样。

然后用你的表定义一个应用程序数据库上下文

 public class ApplicationDbContext : DbContext
    {
        public ApplicationDbContext(DbContextOptions options) : base(options)
        {
        }

        public DbSet<Room> Rooms { get; set; }
        public DbSet<Meal> Meals { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

        }
    }

在包管理器控制台中

add-migration initial
update-database

您应该会看到在 PgAdmin 中创建的表。

并像通常的 c# 列表一样使用您的数据库集。并记住将 applicationdbcontext 注入您需要的控制器中。


推荐阅读