في هذه الصفحة
المقدمة
الـ EF Core هو إطار عمل مفتوح المصدر بيساعدك تدير الاتصال بين تطبيقات .NET Core وقواعد البيانات باستخدام تقنيات ORM (Object-Relational Mapping). يعني بدل ما تكتب استعلامات SQL يدوية، تقدر تتعامل مع البيانات كـ Objects في الكود.
الـ EF Core هو النسخة المحسنة من Entity Framework وبيتيح لك التعامل مع البيانات باستخدام Object Oriented Programming Languages زي C# بدلاً من التعامل مع جداول وقواعد البيانات عبر SQL مباشرة. والـ EF Core بيترجم استعلامات LINQ إلى استعلامات SQL بشكل تلقائي، وده بيسهل عليك التعامل مع البيانات بشكل مرن.
ليه نستخدم EF Core؟
- السهولة والمرونة: EF Core بيخليك تتعامل مع البيانات كـ (Objects) بدل ما تتعامل مع جداول SQL بشكل يدوي، وده بيسهل الكتابة والفهم.
- التحديثات التلقائية (Migrations): EF Core بيتيح لك تحديث قاعدة البيانات بسهولة عن طريق Migrations، بحيث لو عدلت في الكود، تقدر تحدث قاعدة البيانات تلقائيًا بدون ما تكتب استعلامات يدويًا.
- دعم لعدة قواعد بيانات: EF Core بيشتغل مع قواعد بيانات مختلفة زي SQL Server، PostgreSQL، SQLite، MySQL، فده بيسهل دمج التطبيق مع أي قاعدة بيانات بدون مشاكل.
- أداء أفضل: استخدام LINQ لاستعلام البيانات بدل SQL بيحسن الأداء، خصوصًا لو استخدمت حاجات زي AsNoTracking لتحسين قراءة البيانات بسرعة أكبر.
كيفية استخدام EF Core
إعداد الـ DbContext: الـ DbContext هو الرابط بين الكود البرمجي وقاعدة البيانات. في الكود ده بنحدد الجداول اللي هنشتغل معاها باستخدام الـ <DbSet<T.
public class AppDbContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Product> Products { get; set; }
}
الـ CRUD Operations
والـ CRUD هي اختصار لـ (إنشاء Create، قراءة Read، تحديث Update، حذف Delete): باستخدام LINQ تقدر بسهولة تعمل عمليات CRUD.
عمليات الـ Create
var user = new User { Name = "John Doe", Email = "john@example.com" };
context.Users.Add(user);
context.SaveChanges();
عمليات الـ Read
var user = context.Users.FirstOrDefault(u => u.Name == "John Doe");
عمليات الـ Update
user.Email = "newemail@example.com";
context.SaveChanges();
عمليات الـ Delete
context.Users.Remove(user);
context.SaveChanges();
الـ Migrations
بعد ما تعدل في Model (مثلاً تضيف أو تعدل الـ Objects)، تقدر تحدث قاعدة البيانات بسهولة باستخدام Migrations:
dotnet ef migrations add AddNewFields
dotnet ef database update
أفضل الممارسات والـ Best Practices
- استخدم AsNoTracking لو هتقرأ البيانات فقط علشان تحسن الأداء:
var users = context.Users.AsNoTracking().ToList();
- قسم الكود بشكل جيد: زي تقسيمه إلى Repositories أو Services علشان تسهل الصيانة والتوسع.
- استخدم المعاملات Transactions: لو هتعمل عمليات متعددة في قاعدة البيانات تحتاج تزامن، استخدم المعاملات لضمان التنفيذ الصحيح:
using var transaction = context.Database.BeginTransaction();
try
{
// تنفيذ العمليات
context.SaveChanges();
transaction.Commit();
}
catch
{
transaction.Rollback();
}
- دعم لعدة قواعد بيانات: EF Core بيشتغل مع SQL Server و SQLite و PostgreSQL و MySQL. علشان تحدد القاعدة اللي هتستخدمها، تقدر تضيف الكود ده في الإعدادات:
services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer("YourConnectionString"));
في الختام
الـ EF Core هو أداة قوية وسهلة للتعامل مع البيانات في تطبيقات الـ .NET Core. فهو بيساعدك تتعامل مع البيانات بمرونة وسهولة، وبيقدم لك مزايا زي Migrations لتحديث قاعدة البيانات، وتحسين الأداء باستخدام LINQ، مع دعم لعدة قواعد بيانات. فباختصار، EF Core هو الخيار المثالي لو عايز تعمل تطبيقات مرنة وسهلة مع إدارة البيانات.