مقدمة في العمل مع قواعد البيانات في C#
\n\nفي تطوير التطبيقات الحديثة، يُعد العمل مع قواعد البيانات من المهارات الأساسية. توفر C# (.NET) أدوات قوية للتفاعل مع كل من قواعد البيانات العلائقية (PostgreSQL) وقواعد البيانات الموجهة للمستندات (MongoDB). في هذه المقالة، سنشرح أساسيات الاتصال وتنفيذ عمليات CRUD لكلا النظامين.
\n\nالمقالة موجهة للمطورين المبتدئين الذين لديهم معرفة بأساسيات C#. سنتناول كلاً من النهج التقليدي عبر استعلامات SQL (Npgsql) و ORM الحديث Entity Framework Core، بالإضافة إلى العمل مع MongoDB عبر السائق الرسمي.
\n\n1. العمل مع PostgreSQL في C#
\n\nPostgreSQL هو نظام إدارة قواعد بيانات علائقية قوي ومفتوح المصدر. للعمل معه في .NET، يُستخدم حزمة Npgsql أو Entity Framework Core مع موفر Npgsql.EntityFrameworkCore.PostgreSQL.
1.1 الاتصال عبر Npgsql (وصول منخفض المستوى)
\n\nقم بتثبيت الحزمة عبر NuGet:
\n\ndotnet add package Npgsql\n\nمثال على اتصال بسيط وتنفيذ استعلام:
\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 استخدام Entity Framework Core مع PostgreSQL
\n\nقم بتثبيت الحزم:
\n\ndotnet add package Microsoft.EntityFrameworkCore\ndotnet add package Npgsql.EntityFrameworkCore.PostgreSQL\n\nأنشئ نموذجاً وسياقاً:
\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\nعمليات CRUD عبر EF Core:
\n\nusing var db = new AppDbContext();\n\n// Create\ndb.Users.Add(new User { Name = "آنا", 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. العمل مع MongoDB في C#
\n\nMongoDB هي قاعدة بيانات NoSQL تخزن البيانات بتنسيق مستندات BSON. بالنسبة لـ C#، يُستخدم السائق الرسمي MongoDB.Driver.
2.1 التثبيت وإعداد الاتصال
\n\nقم بتثبيت الحزمة:
\n\ndotnet add package MongoDB.Driver\n\nالاتصال بخادم MongoDB المحلي:
\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 مع MongoDB
\n\nأنشئ فئة النموذج:
\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\nمثال على العمل مع المجموعة:
\n\nvar collection = database.GetCollection<User>("users");\n\n// Create\nvar newUser = new User { Name = "إيفان", Age = 30 };\ncollection.InsertOne(newUser);\n\n// Read\nvar filter = Builders<User>.Filter.Eq(u => u.Name, "إيفان");\nvar user = collection.Find(filter).FirstOrDefault();\n\n// Update\nvar update = Builders&l