لماذا C# وPostgreSQL قوة تستحق الإتقان
\n\nعالم التطوير هو اختيار دائم. باختيار اللغة والإطار وقاعدة البيانات، فإننا في الواقع نضع أساس المشروع المستقبلي. وإذا كنت هنا، فأنت مهتم بواحدة من أقوى وأحدث المجموعات في تطوير المؤسسات: C# وPostgreSQL.
\n\nلماذا هذا الثنائي؟ C# هي لغة ناضجة، ذات كتابة صارمة، مع نظام بيئي ضخم وأداء رائع. PostgreSQL هو نظام إدارة قواعد بيانات كائني-علائقي يتفوق على العديد من المنافسين من حيث الإمكانيات والاستقرار ودعم أنواع البيانات المعقدة (مثل JSONB والمصفوفات والبحث النصي الكامل). معًا، يمنحانك ليس مجرد "قاعدة بيانات ولغة"، بل أداة مرنة وقابلة للتوسع لبناء تطبيقات الويب والخدمات المصغرة والأنظمة التحليلية.
\n\nفي هذا الدليل، لن نمر فقط على النظرية. سنغوص عمليًا: من تثبيت برنامج التشغيل إلى كتابة المعاملات المعقدة. ستتعلم كيفية إعداد الاتصال بشكل صحيح، وتنفيذ عمليات CRUD، واستخدام ORMs الحديثة (Entity Framework Core وDapper)، وتجنب الأخطاء الشائعة. هيا بنا!
\n\nالخطوة 1: التحضير: ما يجب تثبيته
\nقبل كتابة الكود، دعنا نتأكد من أن لديك كل ما يلزم.
\n- \n
- PostgreSQL — قم بتنزيل أحدث إصدار من الموقع الرسمي. أثناء التثبيت، تذكر المنفذ (الافتراضي 5432) وكلمة مرور المستخدم المتميز
postgres. \n - Visual Studio / Rider / VS Code — أي بيئة تطوير متكاملة تدعم .NET. \n
- .NET SDK (6.0 أو 7.0 أو 8.0) — كلما كان أحدث كان أفضل. سنستخدم .NET 8. \n
الآن، أنشئ مشروعًا جديدًا. لتطبيق وحدة التحكم، الأمر بسيط:
\ndotnet new console -n CsharpPostgresDemo\ncd CsharpPostgresDemo\n\nالأهم هو تثبيت موفر PostgreSQL. في عالم .NET، هذه هي الحزمة Npgsql (تُنطق "إن-بي-إس-كيو-إل"). وهي الأساس لجميع المكتبات الأخرى.
\ndotnet add package Npgsql\n\nالخطوة 2: أول اتصال: التحقق من الاتصال
\nلننشئ برنامجًا نصيًا بسيطًا يتصل بقاعدة البيانات ويعرض إصدار الخادم. هذه أفضل طريقة للتأكد من أن كل شيء يعمل.
\n\nusing Npgsql;\n\n// سلسلة الاتصال: أدخل بياناتك\nstring connectionString = "Host=localhost;Port=5432;Database=postgres;Username=postgres;Password=your_password";\n\nusing var connection = new NpgsqlConnection(connectionString);\nconnection.Open();\n\n// تنفيذ الاستعلام\nusing var command = new NpgsqlCommand("SELECT version();", connection);\nstring version = (string)await command.ExecuteScalarAsync();\n\nConsole.WriteLine($"تم الاتصال بنجاح! إصدار PostgreSQL: {version}");\n\nقم بتشغيل الكود. إذا رأيت في وحدة التحكم شيئًا مثل "PostgreSQL 16.1 on x86_64-pc-linux-gnu..."، فقد نجحت! إذا لم يحدث ذلك، تحقق من كلمة المرور واسم المضيف وتأكد من تشغيل خدمة PostgreSQL.
\n\nالخطوة 3: عمليات CRUD في C# مع PostgreSQL
\nالآن بعد أن أصبح الاتصال يعمل، دعنا ننشئ جدولًا وننفذ الدورة الكاملة: إنشاء، قراءة، تحديث، حذف.
\n\nإنشاء الجدول
\nstring createTableSql = @"\n CREATE TABLE IF NOT EXISTS users (\n id SERIAL PRIMARY KEY,\n name VARCHAR(100) NOT NULL,\n email VARCHAR(255) UNIQUE NOT NULL,\n created_at TIMESTAMP DEFAULT NOW()\n );";\n\nusing var cmdCreate = new NpgsqlCommand(createTableSql, connection);\nawait cmdCreate.ExecuteNonQueryAsync();\nConsole.WriteLine("تم إنشاء جدول users.");\n\nإدراج البيانات (INSERT)
\n// نستخدم استعلامًا مع معلمات - هذه حماية من حقن SQL!\nstring insertSql = "INSERT INTO users (name, email) VALUES (@name, @email) RETURNING id;";\n\nusing var cmdInsert = new NpgsqlCommand(insertSql, connection);\ncmdInsert.Parameters.AddWithValue("@name", "أل