ما هو Entity Framework Core ولماذا هو مطلوب
\nEntity Framework Core (EF Core) هو أداة تعيين كائني-علائقي (ORM) حديثة لمنصة .NET، تم تطويرها بواسطة شركة Microsoft. تتيح للمطورين العمل مع قواعد البيانات باستخدام كائنات .NET، وتغنيهم عن كتابة معظم كود الوصول إلى البيانات.
\n\nEF Core هو إصدار خفيف الوزن وقابل للتوسع ومتعدد المنصات من Entity Framework. يدعم العديد من أنظمة إدارة قواعد البيانات (DBMS)، بما في ذلك SQL Server و SQLite و PostgreSQL و MySQL و Oracle وغيرها.
\n\nالميزات الرئيسية لـ EF Core:
\n- \n
- إنشاء وتحديث مخطط قاعدة البيانات تلقائيًا بناءً على النموذج (Code First) \n
- تنفيذ الاستعلامات على قاعدة البيانات باستخدام LINQ (Language Integrated Query) \n
- تتبع التغييرات على الكائنات تلقائيًا وإنشاء أوامر SQL لتحديث البيانات \n
- دعم الترحيلات (Migrations) لإدارة تغييرات مخطط قاعدة البيانات \n
- دعم العلاقات بين الكيانات (واحد-إلى-واحد، واحد-إلى-متعدد، متعدد-إلى-متعدد) \n
- تحميل البيانات المرتبطة بشكل كسول (Lazy) أو جشع (Eager) أو صريح (Explicit) \n
تثبيت Entity Framework Core
\nيتم تثبيت EF Core عبر NuGet Package Manager. على عكس Python، يتم استخدام dotnet add package أو مدير الحزم في Visual Studio.
التثبيت عبر .NET CLI:
\ndotnet add package Microsoft.EntityFrameworkCore\ndotnet add package Microsoft.EntityFrameworkCore.SqlServer\ndotnet add package Microsoft.EntityFrameworkCore.Tools\n\nالتثبيت لـ PostgreSQL (Npgsql):
\ndotnet add package Npgsql.EntityFrameworkCore.PostgreSQL\n\nالتثبيت لـ SQLite:
\ndotnet add package Microsoft.EntityFrameworkCore.Sqlite\n\nالتثبيت لـ MySQL:
\ndotnet add package Pomelo.EntityFrameworkCore.MySql\n\nبداية سريعة مع مثال كود
\nلنقم بإنشاء تطبيق وحدة تحكم بسيط للعمل مع قاعدة بيانات الكتب.
\n\n1. إنشاء نموذج البيانات:
\npublic class Book\n{\n public int Id { get; set; }\n public string Title { get; set; }\n public string Author { get; set; }\n public int Year { get; set; }\n public decimal Price { get; set; }\n}\n\npublic class Author\n{\n public int Id { get; set; }\n public string Name { get; set; }\n public List<Book> Books { get; set; } = new();\n}\n\n2. إنشاء سياق قاعدة البيانات:
\npublic class LibraryContext : DbContext\n{\n public DbSet<Book> Books { get; set; }\n public DbSet<Author> Authors { get; set; }\n\n protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n {\n optionsBuilder.UseSqlite("Data Source=library.db");\n }\n}\n\n3. استخدام EF Core للعمل مع البيانات:
\nusing var context = new LibraryContext();\ncontext.Database.EnsureCreated(); // إنشاء قاعدة البيانات إذا لم تكن موجودة\n\n// إضافة البيانات\nvar author = new Author { Name = "ليو تولستوي" };\nauthor.Books.Add(new Book { Title = "الحرب والسلام", Year = 1869, Price = 1500m });\nauthor.Books.Add(new Book { Title = "آنا كارنينا", Year = 1877, Price = 1200m });\n\ncontext.Authors.Add(author);\ncontext.SaveChanges();\n\n// قراءة البيانات\nvar books = context.Books\n .Where(b => b.Year > 1850)\n .OrderBy(b => b.Year)\n .ToList();\n\nforeach (var book in books)\n{\n Console.WriteLine($"{book.Title} ({book.Year})");\n}\n\nالطرق والوظائف الأساسية لـ Entity Framework Core
\n\n1. Add
\nالوصف: يضيف كيانًا جديدًا إلى السياق في حالة Added. عند استدعاء SaveChanges()، سيتم تنفيذ أمر INSERT.
\nالمعلمات:
\n- \n
object entity