在C#中操作数据库:PostgreSQL与MongoDB

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么 C# 开发者应该了解 PostgreSQL 和 MongoDB

现代 C#(.NET)开发几乎离不开数据库操作。关系型(SQL)数据库与文档型(NoSQL)数据库管理系统的选择取决于项目架构。PostgreSQL 是一款支持 JSON 的强大关系型数据库,而 MongoDB 则是一款适用于快速原型开发和大数据场景的灵活文档数据库。本文将介绍如何在 C# 中连接并操作这两个系统。



1. 在 C# 中使用 PostgreSQL

在 .NET 中与 PostgreSQL 交互需要使用 Npgsql 提供程序。它支持 Entity Framework Core 以及直接执行 SQL 查询。



1.1. 安装与连接

安装 NuGet 包:

dotnet add package Npgsql


连接字符串示例:

Host=localhost;Port=5432;Database=mydb;Username=user;Password=pass


1.2. 通过 Npgsql 执行 CRUD 操作

创建一个 Users 表并执行基本操作:

using Npgsql;

var connString = "Host=localhost;Database=testdb;Username=postgres;Password=123";await using var conn = new NpgsqlConnection(connString);await conn.OpenAsync();

// 创建表var createCmd = new NpgsqlCommand(@" CREATE TABLE IF NOT EXISTS Users ( Id SERIAL PRIMARY KEY, Name VARCHAR(100), Age INT )", conn);await createCmd.ExecuteNonQueryAsync();

// 插入数据var insertCmd = new NpgsqlCommand( "INSERT INTO Users (Name, Age) VALUES (@n, @a)", conn);insertCmd.Parameters.AddWithValue("n", "Alexey");insertCmd.Parameters.AddWithValue("a", 30);await insertCmd.ExecuteNonQueryAsync();

// 读取数据var readCmd = new NpgsqlCommand("SELECT * FROM Users", conn);var reader = await readCmd.ExecuteReaderAsync();while (await reader.ReadAsync()){ Console.WriteLine($"{reader["Id"]}: {reader["Name"]}, {reader["Age"]} years old");}


1.3. 使用 Entity Framework Core

安装包:

dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL


定义模型和上下文:

public class User{    public int Id { get; set; }    public string Name { get; set; }    public int Age { get; set; }}

public class AppDbContext : DbContext{ public DbSet<User> Users { get; set; }

protected override void OnConfiguring(DbContextOptionsBuilder options) => options.UseNpgsql("Host=localhost;Database=testdb;Username=postgres;Password=123");}


通过 EF Core 执行 CRUD 操作:

using var db = new AppDbContext();

// 添加db.Users.Add(new User { Name = "Maria", Age = 25 });await db.SaveChangesAsync();

// 读取var users = await db.Users.ToListAsync();foreach (var u in users) Console.WriteLine($"{u.Name} - {u.Age}");

// 更新var user = await db.Users.FirstAsync(u => u.Name == "Maria");user.Age = 26;await db.SaveChangesAsync();

// 删除db.Users.Remove(user);await db.SaveChangesAsync();


2. 在 C# 中使用 MongoDB

MongoDB 以 BSON(二进制 JSON)格式存储数据。C# 使用 MongoDB.Driver 驱动程序。



2.1. 安装与连接

安装 NuGet 包:

dotnet add package MongoDB.Driver


连接到本地服务器:

var client = new MongoClient("mongodb://localhost:27017");var database = client.GetDatabase("testdb");var collection = database.GetCollection<BsonDocument>("users");


2.2. CRUD 操作

通过 BsonDocument 操作文档:

// 创建文档var doc = new BsonDocument{    { "name", "Ivan" },    { "age", 28 },    { "skills", new BsonArray { "C#", "MongoDB", "Docker" } }};await collection.Insert                

博客

书籍推荐