npgsql - 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;
}
}
解决方案
我解释了如何将它与实体框架一起使用。它可能会帮助你。在 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 注入您需要的控制器中。
推荐阅读
- android - Android getSerial() 未返回实际序列号或 IMEI
- list - 如何使用列表中的项目过滤弹性搜索查询
- sql - 合并前几行并将它们提升为标题
- java - 如何实时更改两个 JTextFiled?
- powershell - 变量未在此处的双引号字符串中扩展
- sql - ORA-00903: 从 USER 中选择时表名无效
- multithreading - Go 内存模型发生在之前(具有共享状态的通道)
- javascript - 使用多重过滤器过滤对象数组
- ios - 录入本地通知后无法在特定视图控制器中打开应用程序
- bash - 用于读取 .csv 文件以创建/移动内容的 Bash 脚本