تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[C#.NET] استفسار ارجو من عنده الخبره الكافيه مساعدتي بهذا الموضوع
#2
لإجراء عملية الإضافة إلى قاعدة البيانات باستخدام C# عند وجود علاقة many-to-many كما في المثال الذي وصفته، عليك تنفيذ الخطوات التالية:

1. هيكلة الجداول
  • جدول المنتجات (Products):
      ProductID
    • (المفتاح الأساسي)
      ProductName
    • ...
  • جدول الوحدات (Units):
      UnitID
    • (المفتاح الأساسي)
      UnitName
    • ...
  • جدول التفاصيل (ProductUnitDetails):
      ProductID
    • (مفتاح أجنبي إلى Products)
      UnitID
    • (مفتاح أجنبي إلى Units)
      QuantityPurchasePriceSalePrice

2. عملية الإضافة في C#
مثال:
نفترض أنك تستخدم ADO.NET للإضافة إلى جدول
كود :
ProductUnitDetails
.
الكود:
csharp
نسخ الكود
كود :
using System;
using System.Data.SqlClient;

class Program
{
   static void Main(string[] args)
   {
       // معلومات الاتصال بقاعدة البيانات
       string connectionString = "YourConnectionStringHere";

       // القيم التي ستتم إضافتها
       int productId = 1;  // رقم المنتج
       int unitId = 2;     // رقم الوحدة
       int quantity = 50;  // الكمية
       decimal purchasePrice = 10.5m;  // سعر الشراء
       decimal salePrice = 15.0m;      // سعر البيع

       // الاستعلام لإضافة البيانات
       string insertQuery = @"
           INSERT INTO ProductUnitDetails (ProductID, UnitID, Quantity, PurchasePrice, SalePrice)
           VALUES (@ProductID, @UnitID, @Quantity, @PurchasePrice, @SalePrice)";

       try
       {
           // إنشاء اتصال بقاعدة البيانات
           using (SqlConnection connection = new SqlConnection(connectionString))
           {
               // فتح الاتصال
               connection.Open();

               // إنشاء أمر الإضافة
               using (SqlCommand command = new SqlCommand(insertQuery, connection))
               {
                   // تمرير القيم كمعاملات
                   command.Parameters.AddWithValue("@ProductID", productId);
                   command.Parameters.AddWithValue("@UnitID", unitId);
                   command.Parameters.AddWithValue("@Quantity", quantity);
                   command.Parameters.AddWithValue("@PurchasePrice", purchasePrice);
                   command.Parameters.AddWithValue("@SalePrice", salePrice);

                   // تنفيذ الأمر
                   int rowsAffected = command.ExecuteNonQuery();
                   Console.WriteLine($"{rowsAffected} row(s) inserted successfully.");
               }
           }
       }
       catch (Exception ex)
       {
           Console.WriteLine("Error: " + ex.Message);
       }
   }
}

3. توضيح الكود
  1. الاتصال بقاعدة البيانات: يتم تحديد اتصال قاعدة البيانات في المتغير
    connectionString
  2. .
  3. إنشاء استعلام SQL: يستخدم استعلام
    INSERT
  4. لإضافة البيانات إلى جدول
    ProductUnitDetails
  5. .
  6. تمرير المعاملات: يتم استخدام المعاملات (
    @ProductID
  7. ,
    @UnitID
  8. , ...) لتجنب هجمات SQL Injection.
  9. فتح الاتصال: باستخدام
    SqlConnection
  10. مع استدعاء
    Open
  11. .
  12. تنفيذ الاستعلام: استخدام
    ExecuteNonQuery
  13. لتنفيذ الأمر وإضافة الصف.

4. سيناريوهات أخرى
إذا كنت تستخدم Entity Framework بدلاً من ADO.NET، فإن عملية الإضافة تصبح أكثر بساطة:
باستخدام Entity Framework:
csharp
نسخ الكود
كود :
using (var context = new YourDbContext())
{
   var detail = new ProductUnitDetail
   {
       ProductID = 1,
       UnitID = 2,
       Quantity = 50,
       PurchasePrice = 10.5m,
       SalePrice = 15.0m
   };

   context.ProductUnitDetails.Add(detail);
   context.SaveChanges();
}

ملاحظات هامة:
  1. التحقق من صحة البيانات: تأكد من أن
    ProductID
  2. و
    UnitID
  3. موجودان في الجداول المرتبطة قبل الإضافة.
  4. إدارة الأخطاء: استخدم try-catch لمعالجة أي أخطاء قد تحدث أثناء الإضافة.
  5. صلاحيات قاعدة البيانات: تأكد من أن للمستخدم صلاحيات الإضافة إلى الجدول
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
RE: استفسار ارجو من عنده الخبره الكافيه مساعدتي بهذا الموضوع - بواسطة aljzazy - 25-12-24, 11:18 PM


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم