Arbeit mit Datenbanken in C#: PostgreSQL und MongoDB – vollständiger Leitfaden für .NET-Entwickler
Moderne Entwicklung mit C# (.NET) kommt selten ohne Interaktion mit Datenbanken aus. Unabhängig davon, ob Sie eine Webanwendung, einen Mikroservice oder ein Desktop-Tool erstellen, ist die Fähigkeit, Verbindungen herzustellen und Daten zu verwalten, eine Schlüsselqualifikation. In diesem Artikel behandeln wir die Arbeit mit zwei beliebten Datenbankmanagementsystemen: der relationalen PostgreSQL und der dokumentenorientierten MongoDB. Sie erfahren, wie Sie Verbindungen einrichten, CRUD-Operationen durchführen und typische Fehler vermeiden.
1. Verbindung zu PostgreSQL aus C# (.NET) mit Npgsql
PostgreSQL ist ein leistungsstarkes relationales Open-Source-DBMS. Für die Arbeit damit in .NET wird der Provider Npgsql verwendet. Installieren Sie ihn über NuGet:
dotnet add package NpgsqlNach der Installation wird eine Verbindung über die Verbindungszeichenfolge hergestellt. Beispiel:
using Npgsql;
string connectionString = "Host=localhost;Port=5432;Database=mydb;Username=user;Password=pass";
using var conn = new NpgsqlConnection(connectionString);conn.Open();
Console.WriteLine("Verbindung zu PostgreSQL hergestellt!");Ausführen von SQL-Abfragen: CREATE, INSERT, SELECT
Verwenden Sie NpgsqlCommand zum Ausführen von Befehlen. Betrachten wir die Erstellung einer Tabelle und das Einfügen von Daten:
using var cmd = new NpgsqlCommand();cmd.Connection = conn;
// Tabelle erstellencmd.CommandText = @" CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100), email VARCHAR(200) UNIQUE )";cmd.ExecuteNonQuery();
// Daten mit Parametern einfügencmd.CommandText = "INSERT INTO users (name, email) VALUES (@name, @email)";cmd.Parameters.AddWithValue("name", "Ivan Petrov");cmd.Parameters.AddWithValue("email", "ivan@example.com");cmd.ExecuteNonQuery();
// Daten lesencmd.CommandText = "SELECT id, name, email FROM users";using var reader = cmd.ExecuteReader();while (reader.Read()){ Console.WriteLine($"{reader["id"]}: {reader["name"]} - {reader["email"]}");}Wichtig: Verwenden Sie immer parametrisierte Abfragen zum Schutz vor SQL-Injection.
2. Arbeiten mit PostgreSQL über Entity Framework Core
Für höherwertige Arbeit wird Entity Framework Core (EF Core) mit dem Npgsql-Provider empfohlen. Installieren Sie die Pakete:
dotnet add package Microsoft.EntityFrameworkCoredotnet add package Npgsql.EntityFrameworkCore.PostgreSQLErstellen Sie einen Kontext und ein Modell:
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");}
// Verwendungusing var db = new AppDbContext();db.Database.EnsureCreated();
var user = new User { Name = "Anna Smirnova", Email = "anna@example.com" };db.Users.Add(user);db.SaveChanges();
var users = db.Users.ToList();EF Core generiert automatisch SQL, verwaltet Migrationen und vereinfacht die Codewartung.
3. Verbindung zu MongoDB aus C# (.NET) mit MongoDB.Driver
MongoDB ist eine NoSQL-Datenbank, die Daten im BSON-Dokumentformat speichert. Verwenden Sie für C# den offiziellen Treiber MongoDB.Driver:
dotnet add package MongoDB.DriverVerbindung zum lokalen Server:
using MongoDB.Driver;using MongoDB.Bson;
var client = new MongoClient("mongodb://localhost:27017");var database = client.GetDatabase("mydb");var collection = database.GetCollection<