在C#中操作数据库:PostgreSQL与MongoDB在.NET环境下的实践

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

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

开始课程

在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<

博客

书籍推荐