在C#中处理数据库:PostgreSQL与MongoDB实战

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

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

开始课程

在C#中处理数据库:PostgreSQL与MongoDB实战



数据库操作是任何后端开发人员的核心任务之一。在C# (.NET)生态系统中,开发者可以使用数百种驱动程序和ORM,但最受欢迎的仍然是关系型数据库管理系统(PostgreSQL)和面向文档的NoSQL解决方案(MongoDB)。在本文中,我们将通过实际示例,讲解如何连接这两种数据库、执行CRUD操作,以及如何为特定任务选择合适的工具。



1. C#中的PostgreSQL:通过Npgsql进行连接和CRUD操作



在.NET中,使用库Npgsql(一个高性能的ADO.NET提供程序)来处理PostgreSQL。通过NuGet安装它:



dotnet add package Npgsql


1.1. 连接数据库



本地PostgreSQL服务器的连接字符串如下:



string connectionString = "Host=localhost;Port=5432;Database=testdb;Username=postgres;Password=your_password";


创建一个用于数据库操作的辅助类:



using Npgsql;

public class PostgresService{ private readonly string _connectionString;

public PostgresService(string connectionString) { _connectionString = connectionString; }

public async Task InsertUserAsync(string name, int age) { await using var conn = new NpgsqlConnection(_connectionString); await conn.OpenAsync();

var cmd = new NpgsqlCommand( "INSERT INTO users (name, age) VALUES (@name, @age)", conn); cmd.Parameters.AddWithValue("name", name); cmd.Parameters.AddWithValue("age", age);

await cmd.ExecuteNonQueryAsync(); }

public async Task<List<User>> GetAllUsersAsync() { var users = new List<User>();

await using var conn = new NpgsqlConnection(_connectionString); await conn.OpenAsync();

var cmd = new NpgsqlCommand("SELECT id, name, age FROM users", conn); await using var reader = await cmd.ExecuteReaderAsync();

while (await reader.ReadAsync()) { users.Add(new User { Id = reader.GetInt32(0), Name = reader.GetString(1), Age = reader.GetInt32(2) }); }

return users; }}

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


1.2. 使用Entity Framework Core与PostgreSQL



为了更方便地处理关系型数据,请使用ORM Entity Framework Core以及提供程序Npgsql.EntityFrameworkCore.PostgreSQL:



dotnet add package Microsoft.EntityFrameworkCoredotnet 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 optionsBuilder) { optionsBuilder.UseNpgsql("Host=localhost;Database=testdb;Username=postgres;Password=your_password"); }}


现在CRUD操作变得非常简单:



using (var db = new AppDbContext()){    // Create    db.Users.Add(new User { Name = "Alice", Age = 30 });    db.SaveChanges();

// Read var users = db.Users.ToList();

// Update var user = db.Users.First(); user.Age = 31; db.SaveChanges();

// Delete db.Users.Remove(user); db.SaveChanges();}


2. C#中的MongoDB:通过官方驱动程序处理文档



MongoDB是一种文档型NoSQL数据库,

博客

书籍推荐