دسته بندی ها
17:29 1399/12/08

نحوه ایجاد سرویس CRUD و استفاده از آن در بلیزر (Blazor)

مشخصات سوال کننده :
کاربر : hamid_b     امتیاز کاربر : 510     رتبه کاربر : 4
دسته بندی : Blazor

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3045
پاسخ دهنده : fateme 23:57 1399/12/08

نحوه ایجاد CRUD Service و استفاده از آن در Blazor

خب وقتی شما جدولی رو ایجاد می کنید مطمئنا باید روی این جدول عملیات CRUD (Create - Read - Update - Delete) انجام بدید. نحوه ایجاد سرویس CRUD در بلیزر تقریبا مشابه با ایجاد این سرویس در Asp.net Mvc یا Asp.net Core می باشد. تفاوت اصلی در نحوه استفاده و فراخوانی این سرویس می باشد.

 

چگونه یک سرویس CRUD در بلیزر پیاده سازی کنیم

خب در ابتدا یک پروژه از نوع 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();
    }

}

 

دانلود سورس

به این پاسخ امتیاز بدهید    0
امتیاز: 1617 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود