مقدمة: لماذا يحتاج مطور C# إلى قواعد البيانات؟
أي تطبيق حديث - من مدونة بسيطة إلى نظام ERP مؤسسي - يخزن البيانات. بدون قاعدة بيانات (DB) لا يمكن ضمان التخزين الدائم والبحث السريع وسلامة المعلومات. بالنسبة لمطور C#، فإن القدرة على العمل مع قواعد البيانات ليست مجرد ميزة إضافية، بل هي مهارة إلزامية. في هذه المقالة، سنشرح اثنين من أنظمة إدارة قواعد البيانات الشائعة: قاعدة البيانات العلائقية PostgreSQL وقاعدة البيانات الموجهة للمستندات MongoDB. ستتعلم كيفية الاتصال بهما من تطبيق .NET وتنفيذ العمليات الأساسية (CRUD). المقالة موجهة للمبتدئين، لذا سننتقل من التثبيت إلى أول كود عملي.
1. إعداد البيئة وتثبيت برامج التشغيل
قبل كتابة الكود، يجب تثبيت قواعد البيانات نفسها وإضافة حزم NuGet المناسبة إلى مشروع C#.
1.1. تثبيت PostgreSQL و MongoDB
- PostgreSQL: قم بتنزيل أحدث إصدار من الموقع الرسمي postgresql.org. أثناء التثبيت، تذكر المنفذ (الافتراضي 5432) وكلمة مرور المستخدم المتميز
postgres. - MongoDB: قم بتنزيل Community Edition من mongodb.com. قم بتثبيته كخدمة. للراحة، يمكنك أيضًا تثبيت MongoDB Compass - واجهة رسومية لعرض البيانات.
بعد التثبيت، تأكد من تشغيل الخدمات. للتحقق، استخدم سطر الأوامر (لـ PostgreSQL: psql -U postgres، لـ MongoDB: mongosh).
1.2. إنشاء المشروع وتثبيت الحزم
أنشئ تطبيق وحدة تحكم .NET 8:
dotnet new console -n DatabaseDemocd DatabaseDemoالآن قم بتثبيت برامج التشغيل اللازمة:
// لـ PostgreSQLdotnet add package Npgsql
// لـ MongoDBdotnet add package MongoDB.DriverNpgsql هو موفر .NET كامل لـ PostgreSQL. MongoDB.Driver هو برنامج التشغيل الرسمي من MongoDB, Inc.
2. العمل مع PostgreSQL في C#
PostgreSQL هو نظام إدارة قواعد بيانات كائني-علائقي. يتم تخزين البيانات في جداول مرتبطة ببعضها البعض عبر المفاتيح الخارجية. للعمل، سنستخدم استعلامات SQL الخام عبر Npgsql، حتى تفهم آلية الاتصال وتنفيذ الأوامر.
2.1. الاتصال بالخادم وإنشاء جدول
أولاً، سننشئ قاعدة بيانات (مثل shopdb) عبر psql أو عبر الكود. في الكود، سنتصل بقاعدة بيانات موجودة بالفعل. سنكتب دالة لإنشاء جدول Products:
using Npgsql;
string connectionString = "Host=localhost;Port=5432;Database=shopdb;Username=postgres;Password=your_password";
using var connection = new NpgsqlConnection(connectionString);connection.Open();
string createTable = @"CREATE TABLE IF NOT EXISTS Products ( Id SERIAL PRIMARY KEY, Name VARCHAR(100) NOT NULL, Price DECIMAL(10,2) NOT NULL, Quantity INT DEFAULT 0);";
using var command = new NpgsqlCommand(createTable, connection);command.ExecuteNonQuery();Console.WriteLine("تم إنشاء الجدول.");لاحظ: نستخدم using للإغلاق التلقائي للاتصال. النوع SERIAL ينشئ تلقائيًا حقلًا متزايدًا ذاتيًا.
2.2. عمليات CRUD (إدراج، استعلام، تحديث، حذف)
سنضيف بعض المنتجات ونعرضها على الشاشة:
// إدراج البياناتstring insert = "INSERT INTO Products (Name, Price, Quantity) VALUES (@n, @p, @q)";using var cmdInsert = new NpgsqlCommand(insert, connection);cmdInsert.Parameters.AddWithValue("@n", "لابتوب");cmdInsert.Parameters.AddWithValue("@p", 79999.99m);cmdInsert.Parameters.AddWithValue("@q", 10);cmdInsert.ExecuteNonQu