Entity Framework Core لـ C# (.NET): دليل شامل مع أمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو Entity Framework Core ولماذا هو مطلوب

\n

Entity Framework Core (EF Core) هو أداة تعيين كائني-علائقي (ORM) حديثة لمنصة .NET، تم تطويرها بواسطة شركة Microsoft. تتيح للمطورين العمل مع قواعد البيانات باستخدام كائنات .NET، وتغنيهم عن كتابة معظم كود الوصول إلى البيانات.

\n\n

EF 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
\n\n

تثبيت Entity Framework Core

\n

يتم تثبيت EF Core عبر NuGet Package Manager. على عكس Python، يتم استخدام dotnet add package أو مدير الحزم في Visual Studio.

\n\n

التثبيت عبر .NET CLI:

\n
dotnet add package Microsoft.EntityFrameworkCore\ndotnet add package Microsoft.EntityFrameworkCore.SqlServer\ndotnet add package Microsoft.EntityFrameworkCore.Tools
\n\n

التثبيت لـ PostgreSQL (Npgsql):

\n
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
\n\n

التثبيت لـ SQLite:

\n
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
\n\n

التثبيت لـ MySQL:

\n
dotnet add package Pomelo.EntityFrameworkCore.MySql
\n\n

بداية سريعة مع مثال كود

\n

لنقم بإنشاء تطبيق وحدة تحكم بسيط للعمل مع قاعدة بيانات الكتب.

\n\n

1. إنشاء نموذج البيانات:

\n
public 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\n

2. إنشاء سياق قاعدة البيانات:

\n
public 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\n

3. استخدام EF Core للعمل مع البيانات:

\n
using 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\n

1. Add

\n

الوصف: يضيف كيانًا جديدًا إلى السياق في حالة Added. عند استدعاء SaveChanges()، سيتم تنفيذ أمر INSERT.

\n

المعلمات:

\n
    \n
  • object entity

توصيات