ef core 连接 postgresql 需三步:安装 npgsql.entityframeworkcore.postgresql、microsoft.entityframeworkcore.tools 和 microsoft.entityframeworkcore.design 三个 nuget 包;在 appsettings.json 中配置 postgresql 连接字符串;定义继承 dbcontext 的类并在 program.cs 中通过 adddbcontext 注册,最后执行迁移命令生成数据库。

EF Core 连接 PostgreSQL 不难,关键是三步到位:装对包、写对连接字符串、配好 DbContext。下面直接说清楚怎么做,不绕弯。
安装必需的 NuGet 包
缺一不可,建议用 dotnet CLI 命令安装(兼容性更好):
- Npgsql.EntityFrameworkCore.PostgreSQL:核心驱动,让 EF Core 能跟 PostgreSQL 对话
-
Microsoft.EntityFrameworkCore.Tools:支持迁移命令(
dotnet ef migrations add等) - Microsoft.EntityFrameworkCore.Design:设计时支持,生成上下文和实体时需要
执行命令:
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL<br>dotnet add package Microsoft.EntityFrameworkCore.Tools<br>dotnet add package Microsoft.EntityFrameworkCore.Design
配置连接字符串
推荐放在 appsettings.json 里,结构清晰又方便换环境:
"ConnectionStrings": {<br> "PgConnection": "Host=localhost;Port=5432;Database=myappdb;Username=postgres;Password=your_password"<br>}
注意点:
- 默认端口是 5432,如果改过要同步更新
- 密码敏感?可用
dotnet user-secrets替代明文(开发阶段) - Docker 或远程库?把
Host改成服务名或 IP,确保网络通(常见超时错误多因连不上)
定义 DbContext 并注册依赖注入
先写一个继承 DbContext 的类:
public class AppDbContext : DbContext<br>{<br> public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }<br> public DbSet<Product> Products { get; set; }<br> protected override void OnModelCreating(ModelBuilder modelBuilder)<br> {<br> modelBuilder.Entity<Product>().ToTable("products"); // 映射到小写表名<br> }<br>}
然后在 Program.cs(.NET 6+)中注册:
builder.Services.AddDbContext<AppDbContext>(options =><br> options.UseNpgsql(builder.Configuration.GetConnectionString("PgConnection")));
这样后续控制器或服务里直接注入 AppDbContext 就能用了。
跑一次迁移,生成数据库
确保项目是启动项目,再执行:
dotnet ef migrations add InitialCreate<br>dotnet ef database update
成功后,PostgreSQL 里就会自动建好 products 表(含主键、时间戳等 EF 默认字段)。
基本上就这些。不复杂但容易忽略细节,比如包漏装、连接串端口写错、Docker 网络没打通——遇到连不上,优先查这三项。










