在本文中,我们将探索如何将 PostgreSQL 与 .NET 6 一起使用。我们需要采取的步骤来设置、配置和使用 PostgreSQL 与 .NET 6 WebAPI。

你可以在 youtube 上观看完整的视频

你也可以在 Github 上找到源代码

https://translate.google.com/translate?hl=en&sl=auto&tl=zh&u=https://github.com/mohamadlawand087/Net6-PostgreSQL

在你的机器上安装 Postgres

冲泡安装postgresql

启动和停止 Postgres 正在运行

brew 服务启动 postgresql

酿造服务停止 postgresql

与 Postgres 连接

psql postgres

创建用户和通行证

使用登录密码“12345678”创建角色穆罕默德;

改变角色 mohamad CREATEDB;

使用超级用户更改角色 mohamad;

创建数据库

创建数据库sampledb;

对数据库的大权限

将数据库 sampledb 上的连接授予 mohamad;

安装 EF 工具

dotnet 工具安装 --global dotnet-ef

创建 Web 应用程序

dotnet new webapi -n DbExploration

安装包

dotnet 添加包 Npgsql.EntityFrameworkCore.PostgreSQL

dotnet 添加包 Microsoft.EntityFrameworkCore.Design

dotnet 添加包 Microsoft.EntityFrameworkCore.Tools

使用连接字符串更新 AppSettings

“连接字符串”:{

"SampleDbConnection": "用户 ID u003dmohamad;Passwordu003d12345678;Serveru003dlocalhost;Portu003d5432;Databaseu003dsampledb;Integrated Securityu003dtrue;Poolingu003dtrue;"

}

让我们添加我们的 dbcontext,我们创建一个名为 Data 的文件夹,并在该文件夹中创建一个名为 Api DbContext 的类

使用 Microsoft.EntityFrameworkCore;命名空间 DbExploration.Data;公共类 ApiDbContext:DbContext

{

公共 ApiDbContext(DbContextOptions<ApiDbContext> 选项):base(选项) { }

}

将连接字符串添加到 Program.cs

builder.Services.AddEntityFrameworkNpgsql().AddDbContext<ApiDbContext>(opt u003d>

opt.UseNpgsql(builder.Configuration.GetConnectionString("SampleDbConnection")));

现在开始添加 Models 文件夹,在 Models 文件夹中,我们将创建我们的第一个模型将是一个名为 BaseEntity 的通用类

公共抽象类 BaseEntity

{

公共指导 ID { 获取;放; } u003d Guid.NewGuid();

公共日期时间更新日期 { 获取;放; } u003d 日期时间.UtcNow;

公共字符串UpdatedBy {get;放; } u003d "";

公共字符串AddedBy { get;放; } u003d "";

公共日期时间已添加日期 { 获取;放; } u003d 日期时间.UtcNow;

公共 int 状态 { 获取;放; } u003d 1;

}

接下来我们需要创建一个名为 Team 的新模型

公共类团队:BaseEntity

{

公共团队()

{

Drivers u003d new HashSet<Driver>();

} 公共字符串名称 { 获取;放; } u003d "";

公共字符串年份 { 获取;放; } u003d "";公共虚拟 ICollection<Driver> 驱动程序 { 获取;放; }

}

下一个模型将是驱动程序

公共类驱动程序:BaseEntity

{

公共指导 TeamId { 获取;放; }

公共字符串名称 { 获取;放; } u003d "";

公共 int RacingNumber { 获取;放; }

公共虚拟团队 Team { 获取;放; }

}

下一个模型将是 DriverMedia

公共类 DriverMedia

{

公共 int ID { 获取;放; }

公共字节\ [] 媒体{ 获取;放; }

公共字符串标题{获取;放; } 公共 Guid DriverId { 获取;放; }

公共司机司机{得到;放; }

}

现在我们更新 Db 上下文,我们将使用 fluent API

公共类 ApiDbContext : DbContext

{

公共虚拟 DbSet<Driver> 驱动程序 { 获取;放; }

公共虚拟 DbSet<Team> 团队 { 获取;放; } public ApiDbContext(DbContextOptions<ApiDbContext> options):base(options) { } protected override void OnModelCreating(ModelBuilder modelBuilder)

{

base.OnModelCreating(modelBuilder);

modelBuilder.Entity<驱动程序>(实体 u003d>

{

// 一对多关系

entity.HasOne(d u003d> d.Team)

.WithMany(p u003d> p.Drivers)

.HasForeignKey(d u003d> d.TeamId)

.OnDelete(DeleteBehavior.Restrict)

.HasConstraintName("FK_Driver_Team");

// 一对一

entity.HasOne(d u003d> d.DriverMedia)

.WithOne(i u003d> i.Driver)

.HasForeignKey<DriverMedia>(b u003d> b.DriverId);

});

}

}

要实现对数据库的更改,我们需要执行以下操作

dotnet ef 迁移添加“initial_migrations”

dotnet ef 数据库更新

请评论您可能有的任何问题。

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐