Arbeiten mit Datenbanken in C#: PostgreSQL und MongoDB in der Praxis

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit Datenbanken in C#: PostgreSQL und MongoDB in der Praxis



Das Arbeiten mit Datenbanken ist eine der Kernaufgaben jedes Backend-Entwicklers. Im C# (.NET)-Ökosystem stehen dem Entwickler hunderte Treiber und ORMs zur Verfügung, aber die gefragtesten bleiben relationale DBMS (PostgreSQL) und dokumentenorientierte NoSQL-Lösungen (MongoDB). In diesem Artikel werden wir anhand praktischer Beispiele durchgehen, wie man sich mit beiden Datenbanken verbindet, CRUD-Operationen durchführt und das passende Werkzeug für die jeweilige Aufgabe auswählt.



1. PostgreSQL in C#: Verbindung und CRUD mit Npgsql



Für die Arbeit mit PostgreSQL in .NET wird die Bibliothek Npgsql verwendet – ein leistungsstarker ADO.NET-Provider. Installieren wir sie über NuGet:



dotnet add package Npgsql


1.1. Verbindung zur Datenbank



Die Verbindungszeichenfolge für einen lokalen PostgreSQL-Server sieht so aus:



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


Erstellen wir eine Hilfsklasse für die Arbeit mit der Datenbank:



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. Verwendung von Entity Framework Core mit PostgreSQL



Für eine komfortablere Arbeit mit relationalen Daten verwenden Sie das ORM Entity Framework Core mit dem Provider Npgsql.EntityFrameworkCore.PostgreSQL:



dotnet add package Microsoft.EntityFrameworkCoredotnet add package Npgsql.EntityFrameworkCore.PostgreSQL


Beispiel für ein Modell und einen Kontext:



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"); }}


Jetzt werden CRUD-Operationen trivial:



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. MongoDB in C#: Arbeiten mit Dokumenten über den offiziellen Treiber



MongoDB ist eine dokumentenbasierte NoSQL-Datenbank,

Blogs

Buchempfehlungen