عمليات الاضافة والحذف والتعديل ASP.NET Core MVC .NET 8 (CRUD)

You are currently viewing عمليات الاضافة والحذف والتعديل ASP.NET Core MVC .NET 8 (CRUD)
ASP.NET MVC CRUD OPERATION

عمليات الاضافة والحذف والتعديل ASP.NET Core MVC .NET 8 (CRUD)

اليوم راح نتعلم إطار عمل ASP.NET Core MVC، وكيفية عمله، ثم ستقوم بإنشاء عملية الحفظ والتعديل والقرءاة والحذف (CRUD) أساسية باستخدام Entity Framework Core بطريقة Code First مع قاعدة بيانات. SQL Server

نفتح برنامج الفيجوال استديو 2022

بعدها نختار إنشاء مشروع جديدبعد ذلك نختار ASP.net Core Web App (Model – View – Model)

الخطورة التالية هي تسمية المشروع كما موضح في الصورة يمكنك اختار اي اسم تريد بعد ذلك اضغط التالي

اختر الفريم ورك .NET 8 وبعدها اضغط التالي

بعد إنشاء المشروع أضف الحزم التالية

PowerShell
Install-Package Microsoft.EntityFrameworkCore -Version 8.0.11
Install-Package Microsoft.EntityFrameworkCore.Design -Version 8.0.11
Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 8.0.11
Install-Package Microsoft.EntityFrameworkCore.Tools -Version 8.0.11

يمكنك تشغيل هذه الأوامر في وحدة التحكم الخاصة بـ Package Manager المتوفرة في Visual Studio ضمن القائمة التالية:

Tools > NuGet Package Manager > Package Manager Console

أو عن طريق Manage NuGet Packages

في مجلد Models اضف ملف جديد سميه User.cs

C#
public class User
  {
      public int Id { get; set; }
      public string FirstName { get; set; } = string.Empty;
      public string LastName { get; set; } = string.Empty;
  }

بعدما أضفنا User نضيف مجلد جديد نسميه Data ونضيف DataContext

C#
public class DataContext : DbContext
{
    public DataContext(DbContextOptions options) : base(options)
    {
    }

    public DbSet<User> Users { get; set; }
}

الان نذهب الى ملف appsetting.json ونضيف معلومات الاتصال بقاعد البيانات كالتالي

C#
 "ConnectionStrings": {
   "MVCCrudTest": "Server=.\\SQLEXPRESS;Database=MVCCrudoperation;Trusted_Connection=True;TrustServerCertificate=Yes"
 }

الان نضيف معلومات الاتصال بالداتا بيز الى ملف Program.cs

C#
builder.Services.AddDbContext<datacontext>(options =><br>options.UseSqlServer(builder.Configuration.GetConnectionString("MVCCrudTest")));</datacontext>

حان الوقت الان لأنشاء قاعدة البيلنات عن طريق Migrations

Tools -> NuGet Packet Manager -> Package Manager Console

C#
Add-Migration intialMigration

update-database بعدها نكتب الامر

C#
Update-Database

لتأكد من الداتابيز نفتح برنامج SQL Server Management Studio

نبدأ الان بانشاء Controller

سمي الكنترولر UsersController.cs أو اي اسم اخر

بعد ذلك نضيف الأكش ونحقن DataContext كالتالي

C#
public UserController(DataContext context)
{
    _context = context;
}

public async Task<IActionResult> List()
{
    var users = await _context.Users.ToListAsync();
    return View(users);
}

الان نضيف الفيو كالتالي

الان نحصل على الداتا من الداتابيز ونمررها للفيو

الان سوف نعمل على عرض الداتا على الفيو

HTML
@model List<User> 
@{
}
<a asp-area="" asp-controller="User"
   asp-action="Add"
 class="btn btn-primary">Add User</a>

<table class="table">
    <thead>
        <tr>
            <td>Id</td>
            <td>First Name</td>
            <td>Last Name</td>
            <td></td>
        </tr>
    </thead>
    <tbody>
        @foreach (var user in Model)
        {
            <tr>
                <td>@user.Id</td>
                <td>@user.FirstName</td>
                <td>@user.LastName</td>
                <td>
                    <a asp-area="" asp-controller="User"
                       asp-action="Edit"
                       asp-route-id="@user.Id" class="btn btn-info">Edit</a>

                    <a asp-area="" asp-controller="User"
                       asp-action="Delete"
                       asp-route-id="@user.Id" class="btn btn-danger">Delete</a>
                </td>
            </tr>
        }
       
    </tbody>
</table>

الان سوف نضيف مستخدم جديد

C#
     [HttpGet]
     public IActionResult Add()
     {
         return View();
     }

     [HttpPost]
     public async Task<IActionResult> Add(User user)
     {
         _context.Users.Add(user);
         await _context.SaveChangesAsync();
         return RedirectToAction("List");
     }

في الفيو

C#
@model User
@{
}

<form method="post">
    <div class="mb-3">
        <label class="form-label">First Name</label>
        <input type="text" id="firstName" class="form-control" asp-for="FirstName" required />
        <span class="text-danger" asp-validation-for="FirstName"></span>
    </div>

    <div class="mb-3">
        <label class="form-label">Last Name</label>
        <input type="text" id="lastName" class="form-control" asp-for="LastName" required />
        <span class="text-danger" asp-validation-for="LastName"></span>
    </div>

    <div class="mb-3">
        <button type="submit" class="btn btn-dark">Add New User</button>
    </div>
</form>

الان ننتقل الى عملية التعديل

C#
[HttpGet]
public IActionResult Edit(int id)
{
    var user = _context.Users.Find(id);
    return View(user);
}

[HttpPost]
public async Task<IActionResult> Edit(User user)
{
    var dbUser = await _context.Users.FindAsync(user.Id);
    if (dbUser != null)
    {
        dbUser.FirstName = user.FirstName;
        dbUser.LastName = user.LastName;
        await _context.SaveChangesAsync();
    }

    return RedirectToAction("List");
}
HTML
@model User
@{
}

<form method="post">
    <input type="hidden" asp-for="Id" />
    <div class="mb-3">
        <label class="form-label">First Name</label>
        <input type="text" id="firstName" class="form-control" asp-for="FirstName" required />
        <span class="text-danger" asp-validation-for="FirstName"></span>
    </div>

    <div class="mb-3">
        <label class="form-label">Last Name</label>
        <input type="text" id="lastName" class="form-control" asp-for="LastName" required />
        <span class="text-danger" asp-validation-for="LastName"></span>
    </div>

    <div class="mb-3">
        <button type="submit" class="btn btn-dark">Edit User</button>
    </div>
</form>

الان سوف ننتقل الى اخر عملية وهي عملية الحذف

C#
 [HttpGet]
 public async Task<IActionResult> Delete(int id)
 {
     var user = _context.Users.Find(id);
     if (user != null)
     {
         _context.Remove(user);
         await _context.SaveChangesAsync();
     }
     return RedirectToAction("List");
 }

البرنامج النهائي

يمكنك تحميل البرنامج من GitHub

برمجة سعيدة! 😊👨‍💻👩‍💻

إبراهيم محمد

مهتم بالتقنية والبرمجة

اترك تعليقاً