Einführung in die Arbeit mit Datenbanken in C#
\n\nIn der modernen Anwendungsentwicklung ist die Arbeit mit Datenbanken eine der Schlüsselkompetenzen. C# (.NET) bietet leistungsstarke Werkzeuge für die Interaktion sowohl mit relationalen (PostgreSQL) als auch mit dokumentenorientierten (MongoDB) Datenbanken. In diesem Artikel behandeln wir die Grundlagen der Verbindung und der Durchführung von CRUD-Operationen für beide Systeme.
\n\nDer Artikel richtet sich an Anfänger-Entwickler, die mit den Grundlagen von C# vertraut sind. Wir betrachten sowohl den traditionellen Ansatz über SQL-Abfragen (Npgsql) als auch das moderne ORM – Entity Framework Core, sowie die Arbeit mit MongoDB über den offiziellen Treiber.
\n\n1. Arbeit mit PostgreSQL in C#
\n\nPostgreSQL ist ein leistungsstarkes relationales Open-Source-DBMS. Für die Arbeit damit in .NET wird das Paket Npgsql oder Entity Framework Core mit dem Anbieter Npgsql.EntityFrameworkCore.PostgreSQL verwendet.
1.1 Verbindung über Npgsql (Low-Level-Zugriff)
\n\nInstallieren Sie das Paket über NuGet:
\n\ndotnet add package Npgsql\n\nBeispiel für eine einfache Verbindung und Abfrageausführung:
\n\nusing Npgsql;\n\nstring connectionString = "Host=localhost;Port=5432;Database=mydb;Username=user;Password=pass";\n\nusing var conn = new NpgsqlConnection(connectionString);\nconn.Open();\n\nstring sql = "SELECT id, name, age FROM users WHERE age > @minAge";\nusing var cmd = new NpgsqlCommand(sql, conn);\ncmd.Parameters.AddWithValue("minAge", 18);\n\nusing var reader = cmd.ExecuteReader();\nwhile (reader.Read())\n{\n Console.WriteLine($"ID: {reader["id"]}, Name: {reader["name"]}, Age: {reader["age"]}");\n}\n\n1.2 Verwendung von Entity Framework Core mit PostgreSQL
\n\nInstallieren Sie die Pakete:
\n\ndotnet add package Microsoft.EntityFrameworkCore\ndotnet add package Npgsql.EntityFrameworkCore.PostgreSQL\n\nErstellen Sie ein Modell und einen Kontext:
\n\npublic class User\n{\n public int Id { get; set; }\n public string Name { get; set; }\n public int Age { get; set; }\n}\n\npublic class AppDbContext : DbContext\n{\n public DbSet<User> Users { get; set; }\n\n protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n {\n optionsBuilder.UseNpgsql("Host=localhost;Database=mydb;Username=user;Password=pass");\n }\n}\n\nCRUD-Operationen über EF Core:
\n\nusing var db = new AppDbContext();\n\n// Create\ndb.Users.Add(new User { Name = "Anna", Age = 25 });\ndb.SaveChanges();\n\n// Read\nvar users = db.Users.Where(u => u.Age > 20).ToList();\n\n// Update\nvar user = db.Users.First();\nuser.Age = 30;\ndb.SaveChanges();\n\n// Delete\ndb.Users.Remove(user);\ndb.SaveChanges();\n\n2. Arbeit mit MongoDB in C#
\n\nMongoDB ist eine NoSQL-Datenbank, die Daten im BSON-Dokumentenformat speichert. Für C# wird der offizielle Treiber MongoDB.Driver verwendet.
2.1 Installation und Einrichtung der Verbindung
\n\nInstallieren Sie das Paket:
\n\ndotnet add package MongoDB.Driver\n\nVerbindung zum lokalen MongoDB-Server:
\n\nusing MongoDB.Driver;\n\nvar client = new MongoClient("mongodb://localhost:27017");\nvar database = client.GetDatabase("mydb");\nvar collection = database.GetCollection<BsonDocument>("users");\n\n2.2 CRUD-Operationen mit MongoDB
\n\nErstellen Sie eine Modellklasse:
\n\npublic class User\n{\n public MongoDB.Bson.ObjectId Id { get; set; }\n public string Name { get; set; }\n public int Age { get; set; }\n}\n\nBeispiel für die Arbeit mit einer Collection:
\n\nvar collection = database.GetCollection<User>("users");\n\n// Create\nvar newUser = new User { Name = "Ivan", Age = 30 };\ncollection.InsertOne(newUser);\n\n// Read\nvar filter = Builders<User>.Filter.Eq(u => u.Name, "Ivan");\nvar user = collection.Find(filter).FirstOrDefault();\n\n// Update\nvar update = Builders&l