Blazor - الاتصال بقاعدة بيانات عبر Entity Framework Core

Blazor Server - الاتصال بقاعدة بيانات عبر Entity Framework Core

للاتصال بقاعدة بيانات SQL Server (أو أي قاعدة بيانات أخرى)، نستخدم مكتبة Entity Framework Core داخل Blazor Server بكل سهولة وكفاءة.

🔹 الخطوات الأساسية لإعداد الاتصال:

  • 1️⃣ إنشاء كلاس DbContext.
  • 2️⃣ إنشاء موديل (Model) يمثل الجدول.
  • 3️⃣ تسجيل DbContext في خدمة Dependency Injection.
  • 4️⃣ استخدام DbContext داخل المكونات أو الخدمات.
---

🔹 مثال عملي متكامل:

سننشئ قاعدة بيانات بسيطة لإدارة الطلاب (Students).

1️⃣ إنشاء موديل Student:


// ملف Models/Student.cs

public class Student
{
    public int Id { get; set; }
    
    [Required]
    public string Name { get; set; }
}
---

2️⃣ إنشاء DbContext:


// ملف Data/ApplicationDbContext.cs

public class ApplicationDbContext : DbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
        : base(options)
    {
    }

    public DbSet<Student> Students { get; set; }
}
---

3️⃣ تسجيل DbContext في Program.cs:


// ملف Program.cs

var builder = WebApplication.CreateBuilder(args);

// تسجيل DbContext
builder.Services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();

var app = builder.Build();

// الإعدادات المعتادة
app.UseRouting();
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");

app.Run();
---

4️⃣ إضافة الاتصال داخل appsettings.json:


// ملف appsettings.json

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=StudentDb;Trusted_Connection=True;"
  }
}
---

5️⃣ استخدام DbContext داخل مكون Blazor:


// ملف Pages/StudentsList.razor

@page "/students"
@inject ApplicationDbContext db

<h3>قائمة الطلاب</h3>

@if (students == null)
{
    <p>جاري التحميل...</p>
}
else
{
    <ul>
        @foreach (var student in students)
        {
            <li>@student.Name</li>
        }
    </ul>
}

@code {
    private List<Student> students;

    protected override async Task OnInitializedAsync()
    {
        students = await db.Students.ToListAsync();
    }
}
---

🔹 ملاحظات إضافية:

  • يمكنك استخدام Migrations لإنشاء القاعدة والجداول تلقائيًا من الكود (Code-First Approach).
  • يمكنك الاستفادة من مبدأ Dependency Injection لإدارة DbContext بطريقة احترافية.
  • EF Core يدعم Lazy Loading, Eager Loading وExplicit Loading.

✅ بفضل EF Core مع Blazor Server، تستطيع التعامل مع قواعد البيانات بسهولة وكفاءة عالية، وكأنك تتعامل مع كائنات C# عادية!

تعليقات

المشاركات الشائعة من هذه المدونة

HTML - Text Formatting تنسيقات النص

1.1 SQL Introduction

Entity Framework - مقدمة عن Entity Framework