25-12-24, 11:18 PM
لإجراء عملية الإضافة إلى قاعدة البيانات باستخدام C# عند وجود علاقة many-to-many كما في المثال الذي وصفته، عليك تنفيذ الخطوات التالية:
1. هيكلة الجداولجدول الوحدات (Units):
(المفتاح الأساسي)
UnitName
...
جدول التفاصيل (ProductUnitDetails):
(مفتاح أجنبي إلى Products)
UnitID
(مفتاح أجنبي إلى Units)
QuantityPurchasePriceSalePrice
2. عملية الإضافة في C#
مثال:
نفترض أنك تستخدم ADO.NET للإضافة إلى جدول
.
الكود:
csharp
نسخ الكود
3. توضيح الكود
4. سيناريوهات أخرى
إذا كنت تستخدم Entity Framework بدلاً من ADO.NET، فإن عملية الإضافة تصبح أكثر بساطة:
باستخدام Entity Framework:
csharp
نسخ الكود
ملاحظات هامة:
1. هيكلة الجداول
- جدول المنتجات (Products):
-
ProductID
- (المفتاح الأساسي)
ProductName - ...
-
UnitID
UnitName
-
ProductID
UnitID
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. توضيح الكود
- الاتصال بقاعدة البيانات: يتم تحديد اتصال قاعدة البيانات في المتغير
connectionString - .
- إنشاء استعلام SQL: يستخدم استعلام
INSERT - لإضافة البيانات إلى جدول
ProductUnitDetails - .
- تمرير المعاملات: يتم استخدام المعاملات (
@ProductID - ,
@UnitID - , ...) لتجنب هجمات SQL Injection.
- فتح الاتصال: باستخدام
SqlConnection - مع استدعاء
Open - .
- تنفيذ الاستعلام: استخدام
ExecuteNonQuery - لتنفيذ الأمر وإضافة الصف.
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();
}ملاحظات هامة:
- التحقق من صحة البيانات: تأكد من أن
ProductID - و
UnitID - موجودان في الجداول المرتبطة قبل الإضافة.
- إدارة الأخطاء: استخدم try-catch لمعالجة أي أخطاء قد تحدث أثناء الإضافة.
- صلاحيات قاعدة البيانات: تأكد من أن للمستخدم صلاحيات الإضافة إلى الجدول

