لطفا در مورد نحوه ایجاد سرویس CRUD و استفاده از آن در بلیزر (Blazor) راهنمایی کنید. چجوری باید یک Service به صورت CRUD در بلیزر ایجاد کرد و چگونه میتوان از این سرویس در Component ها استفاده کرد ؟
خب وقتی شما جدولی رو ایجاد می کنید مطمئنا باید روی این جدول عملیات CRUD (Create - Read - Update - Delete) انجام بدید. نحوه ایجاد سرویس CRUD در بلیزر تقریبا مشابه با ایجاد این سرویس در Asp.net Mvc یا Asp.net Core می باشد. تفاوت اصلی در نحوه استفاده و فراخوانی این سرویس می باشد.
خب در ابتدا یک پروژه از نوع Blazor Server و یا Blazor WebAssembly ایجاد کنید.
خب مجددا روی پوشه Data کلیک راست کنید و یک کلاس به نام Category ایجاد کنید. این کلاس یک جدول دیتابیسی به نام Category_Tbl خواهد بود.
کلاس Category
public class Category
{
[Key]
public int CategoryID { get; set; }
[Required]
public string Name { get; set; }
}
روی پوشه Data کلیک راست کنید و یک کلاس به نام ApplicationDbContext ایجاد کنید. این کلاس همان نقش دیتابیس را در پروژه ما به عهده دارد. (فرض رو بر این میذارم با انتیتی فریم ورک آشنا هستید.)
کلاس ApplicationDbContex
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
public DbSet<Category> Categories_Tbl { get; set; }
}
همانطوری که می بینید در کلاس ApplicationDbContext جدول Category_Tbl هم تعریف شده است.
خب حالا می تونید به راحتی دیتابیس خودتون رو به وجود بیارید. ایجاد دیتابیس به روش مایگریشن و کاملا مشابه با همان کاری است که در Asp.net Core انجام میشه. (ساخت دیتابیس توسط مایگریشن در Code First در Asp.net Mvc Core)
بعد از اینکه دیتابیس شما هم آماده شد، شما نیاز دارید برای استفاده از جدول Categoty_Tbl یک سرویس CRUD ایجاد کنید و عملیات اصلی یعنی Create و Read و Update و Delete رو درون اون بنویسید. بنابراین روی نام پروژه کلیک راست کنید و یک پوشه جدید به نام Services ایجاد کنید و درون این پوشه یک کلاس جدید به نام CategoryService ایجاد کنید. دقت کنید تا اینجای کار Solution شما باید به این شکل باشد.
خب حالا کدهای زیر را در CategoryService بنویسید.
کلاس CategoryService
public class CategoryService
{
private readonly ApplicationDbContext _db;
public CategoryService(ApplicationDbContext db)
{
_db = db;
}
public Category GetCategory(int CategoryId)
{
return _db.Category_Tbl.FirstOrDefault(c => c.CategoryID == CategoryId);
}
public List<Category> GetCategories()
{
return _db.Category_Tbl.ToList();
}
public bool CreateCategory(Category cat)
{
_db.Category_Tbl.Add(cat);
_db.SaveChanges();
return true;
}
public bool UpdateCategory(Category category)
{
var ExistingCategory = _db.Category_Tbl.FirstOrDefault(u => u.CategoryID == category.CategoryID);
if (ExistingCategory != null)
{
ExistingCategory.Name = category.Name;
_db.SaveChanges();
}
else
{
return false;
}
return true;
}
public bool RemoveCategory(Category category)
{
var ExistingCategory = _db.Category_Tbl.FirstOrDefault(u => u.CategoryID == category.CategoryID);
if (ExistingCategory != null)
{
_db.Category_Tbl.Remove(category);
_db.SaveChanges();
}
else
{
return false;
}
return true;
}
}
در کلاس CategoryService هر 4 عمل اصلی را پیاده سازی کرده ایم.
راه اندازی Service در بلیزر
خب بعد از اینکه یک Service را ایجاد کردیم باید این سرویس را به پروژه معرفی کنیم تا به محض اجرای پروژه سرویس مورد نظر شناسایی شود. بنابراین کلاس Startup.cs را باز کنید و در متد ConfigureService دستور زیر را بنویسید.
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddSingleton<WeatherForecastService>();
//راه اندازی سرویس مورد نظر
services.AddScoped<CategoryService>();
}
خب همه چیز آماده می باشد. حالا کافیست از این سرویس استفاده کنیم. بنابراین در پوشه Pages یکی از کامپوننت ها مثل Counter.razor را باز کنید و در بالای View دستور زیر را بنویسید.
@using CrudService.Services
@inherits OwningComponentBase<CategoryService>
دقت کنید توسط دستور OwningComponentBase می توانید سرویس مورد نظر را در کامپوننت Inject کنید. حالا به تمامی متدها و توابع سرویس CategoryService دسترسی دارید.
دقت کنید که شما توسط کلمه Service می توانید به همه متدها و توابع سرویس دسترسی داشته باشید.
@code {
void CategoryList()
{
Service.GetCategories();
}
}
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1378
- پاسخ :
1
|
تاریخ :
1400/05/03
- ساعت :
10:48:00 AM
- بازدید :
6779
- پاسخ :
5
|
تاریخ :
1400/12/06
- ساعت :
01:20:00 PM
- بازدید :
3958
- پاسخ :
1
|
تاریخ :
1402/12/25
- ساعت :
03:38:00 PM
- بازدید :
680
- پاسخ :
0
|
تاریخ :
1400/02/14
- ساعت :
04:50:00 PM
- بازدید :
3206
- پاسخ :
1
|
تاریخ :
1401/03/05
- ساعت :
11:25:00 AM
- بازدید :
2606
- پاسخ :
1
|
تاریخ :
1401/02/04
- ساعت :
03:29:00 PM
- بازدید :
2724
- پاسخ :
0
|
تاریخ :
1401/01/19
- ساعت :
03:05:00 PM
- بازدید :
3625
- پاسخ :
2
|
تاریخ :
1400/09/17
- ساعت :
07:58:00 PM
- بازدید :
2619
- پاسخ :
1
|
تاریخ :
1399/09/26
- ساعت :
11:26:00 PM
- بازدید :
3313
- پاسخ :
2
|
تاریخ :
1403/09/06
- ساعت :
09:51:00 PM
- بازدید :
87
- پاسخ :
1
|
تاریخ :
1400/07/17
- ساعت :
10:39:00 PM
- بازدید :
2335
- پاسخ :
0
|
تاریخ :
1403/09/05
- ساعت :
06:32:00 PM
- بازدید :
70
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2037
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
149
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1067
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
474
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
948
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1378
- پاسخ :
1
|