在C#中处理数据库:PostgreSQL和MongoDB — .NET开发人员完整指南
现代C# (.NET)开发很少不涉及数据库交互。无论您是在创建Web应用程序、微服务还是桌面工具,连接和管理数据的能力都是关键技能。在本文中,我们将介绍两种流行的数据库管理系统:关系型PostgreSQL和文档型MongoDB。您将学习如何配置连接、执行CRUD操作以及避免常见错误。
1. 使用Npgsql从C# (.NET)连接到PostgreSQL
PostgreSQL是一个强大的开源关系型数据库管理系统。在.NET中,使用Npgsql提供程序与之交互。通过NuGet安装:
dotnet add package Npgsql安装后,通过连接字符串创建连接。示例:
using Npgsql;
string connectionString = "Host=localhost;Port=5432;Database=mydb;Username=user;Password=pass";
using var conn = new NpgsqlConnection(connectionString);conn.Open();
Console.WriteLine("已建立与PostgreSQL的连接!");执行SQL查询:CREATE, INSERT, SELECT
使用NpgsqlCommand执行命令。让我们创建表并插入数据:
using var cmd = new NpgsqlCommand();cmd.Connection = conn;
// 创建表cmd.CommandText = @" CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100), email VARCHAR(200) UNIQUE )";cmd.ExecuteNonQuery();
// 带参数的插入数据cmd.CommandText = "INSERT INTO users (name, email) VALUES (@name, @email)";cmd.Parameters.AddWithValue("name", "伊万·彼得罗夫");cmd.Parameters.AddWithValue("email", "ivan@example.com");cmd.ExecuteNonQuery();
// 读取数据cmd.CommandText = "SELECT id, name, email FROM users";using var reader = cmd.ExecuteReader();while (reader.Read()){ Console.WriteLine($"{reader["id"]}: {reader["name"]} - {reader["email"]}");}重要提示:始终使用参数化查询以防止SQL注入攻击。
2. 通过Entity Framework Core使用PostgreSQL
对于更高级别的操作,建议使用Entity Framework Core (EF Core)配合Npgsql提供程序。安装包:
dotnet add package Microsoft.EntityFrameworkCoredotnet add package Npgsql.EntityFrameworkCore.PostgreSQL创建上下文和模型:
public class User{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; }}
public class AppDbContext : DbContext{ public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options) => options.UseNpgsql("Host=localhost;Database=mydb;Username=user;Password=pass");}
// 使用using var db = new AppDbContext();db.Database.EnsureCreated();
var user = new User { Name = "安娜·斯米尔诺娃", Email = "anna@example.com" };db.Users.Add(user);db.SaveChanges();
var users = db.Users.ToList();EF Core自动生成SQL、管理迁移并简化代码维护。
3. 使用MongoDB.Driver从C# (.NET)连接到MongoDB
MongoDB是一种NoSQL数据库,以BSON文档格式存储数据。对于C#,使用官方驱动程序MongoDB.Driver:
dotnet add package MongoDB.Driver连接到本地服务器:
using MongoDB.Driver;using MongoDB.Bson;
var client = new MongoClient("mongodb://localhost:27017");var database = client.GetDatabase("mydb");var collection = database.GetCollection<