引言:为什么 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=pass1.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