介绍
Entity Framework (EF) 是 .NET Framework 中的一种对象关系映射 (ORM) 框架,它允许开发人员使用 .NET 对象操作数据库。在 .NET Core 中,EF Core 是 Entity Framework 的轻量级版本,它支持多种数据库(关系型和非关系型)以及不同的开发平台。本文将介绍如何在 .NET Core 中使用 EF Core 操作 PostgreSQL 数据库。
准备工作
在开始使用 EF Core 操作 PostgreSQL 数据库之前,需要安装以下软件:
Visual Studio 2019(或更高版本)
.NET Core SDK 3.1(或更高版本)
PostgreSQL 数据库
你可以从 PostgreSQL 官网 下载 PostgreSQL 数据库。
步骤 1:创建一个新的 .NET Core 项目
首先,我们需要创建一个新的 .NET Core 项目。在 Visual Studio 中,选择“创建新项目”,然后选择“ASP.NET Core Web 应用程序”。为项目命名,选择“API”模板,并确保选择“ASP.NET Core 3.1”或更高版本。单击“创建”按钮创建项目:
步骤 2:安装 PostgreSQL 数据库驱动程序
EF Core 支持多种关系型数据库,但为了在 .NET Core 项目中使用 PostgreSQL,我们需要安装适当的 Npgsql 驱动程序。Npgsql 是官方的 .NET 数据提供程序,它是使用 C# 编写的,用于与 PostgreSQL 数据库进行通信。
在 Visual Studio 的“解决方案资源管理器”中,右键单击项目,选择“管理 NuGet 包”。在“NuGet 包管理器”中搜索“Npgsql.EntityFrameworkCore.PostgreSQL”,然后安装最新版。这将安装 Npgsql 驱动程序并更新项目的 .csproj 文件:
步骤 3:创建一个 PostgreSQL 数据库
在 EF Core 中,数据库操作需要 DbContext 类。在本例中,我们将创建一个基本的 DbContext 去连接 PostgreSQL 数据库,并可将连接字符串放在 appsettings.json 文件中。
在 Visual Studio 的“解决方案资源管理器”中,右键单击“项目”,然后选择“添加新文件”。选择“数据” > “ADO.NET 实体数据模型”,将其命名为“BloggingContext”并单击“添加”:
选择“代码优先”,然后单击“完成”按钮。此时我们需要修改该类以连接 PostreSQL 数据库。
首先,我们需要在 appsettings.json 文件中添加连接字符串。打开 appsettings.json 文件,添加以下内容:
"ConnectionStrings": {
"Blog": "Host=localhost;Database=Blog;Username=postgres;Password=password"
}
在上述连接字符串中,“Host”是数据库服务器的名称或 IP 地址,“Database”是要连接的数据库名称,“Username”是访问数据库的用户名,“Password”是访问数据库的密码。
接下来,我们需要修改自动生成的 BloggingContext 类。在该类中,有自动生成的 OnConfiguring 方法,该方法设置了 SQL Server 数据库连接字符串。要使用 PostgreSQL 数据库,请修改此方法以使用 PostgreSQL 数据库连接字符串。打开 BloggingContext.cs 文件,并按如下所示修改 OnConfiguring 方法:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
//连接字符串的名字为 Blog
optionsBuilder.UseNpgsql(Configuration.GetConnectionString("Blog"));
}
}
步骤 4:创建一个实体并在数据库中创建表
有了 DbContext 和数据库连接字符串之后,我们就可以开始创建实体并在 PostgreSQL 数据库中创建表了。创建一个包含 Name、Url 和 Rating 属性的 Blog 类。在此示例中,我们还将为 Blog 带上 Required 和 MaxLength 特性:
public class Blog
{
public int BlogId { get; set; }
[Required]
[MaxLength(100)]
public string Name { get; set; }
[Required]
public string Url { get; set; }
public int Rating { get; set; }
}
接下来,可以使用“终端”窗口或“包管理器控制台”窗口使用以下命令生成数据库和表结构:
dotnet ef database update
此命令将会利用代码优先方式,生成相应的数据表。
步骤 5:使用 EF Core 操作 PostgreSQL 数据库
现在,我们已经成功配置 EF Core 连接到 PostgreSQL 数据库并创建了表。我们可以进行各种数据库操作,例如插入、查询和更新数据。以下是一些示例:
插入数据
可以使用以下代码向 Blog 数据库中插入新数据:
using (var context = new BloggingContext())
{
var blog = new Blog { Name = "Blog1", Url = "http://www.blog.com", Rating = 5 };
context.Blogs.Add(blog);
context.SaveChanges();
}
查询数据
可以使用以下代码从 Blog 数据库中查询数据:
using (var context = new BloggingContext())
{
var blogs = context.Blogs.ToList();
}
更新数据
可以使用以下代码更新现有数据:
using (var context = new BloggingContext())
{
var blog = context.Blogs.FirstOrDefault(b => b.BlogId == 1);
if (blog != null)
{
blog.Rating = 4;
context.SaveChanges();
}
}
总结
本文介绍了如何在 .NET Core 中使用 EF Core 操作 PostgreSQL 数据库。我们介绍了如何安装 Npgsql 驱动程序、创建数据库、建立表、插入、查询和更新数据。通过使用 EF Core,我们可以以面向对象的方式操作 PostgreSQL 数据库,避免写繁琐的 SQL 语句。