منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[C#.NET] استفسار ارجو من عنده الخبره الكافيه مساعدتي بهذا الموضوع - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175)
+--- قسم : قسم اسئلة C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=176)
+--- الموضوع : [C#.NET] استفسار ارجو من عنده الخبره الكافيه مساعدتي بهذا الموضوع (/showthread.php?tid=50767)



استفسار ارجو من عنده الخبره الكافيه مساعدتي بهذا الموضوع - Yousef fuad - 08-12-24

قمت بإنشاء جدول للمنتجات وجدول للوحدات ولأن العلاقة بينهم mony to mony قمت بإنشاء جدول ثالث تفاصيل حيث انه يحتوي على الحقول التالية رقم المنتج ورقم الوحدة والكمية وسعر الشراء وسعر البيع لذا واجهة مشكله الاضافة في لغة السي شارب ارجو من الجميع مساعدتي في هذا الموضوع لأني لا اعرف كيف ستكون العملية ولكم جزيل الشكر


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

لإجراء عملية الإضافة إلى قاعدة البيانات باستخدام 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. صلاحيات قاعدة البيانات: تأكد من أن للمستخدم صلاحيات الإضافة إلى الجدول