پیاده سازی کلاس Seed در Asp.Net Core
پیاده سازی کلاس Seed در Asp.Net Core
در این پست قصد داریم نحوه ثبت اطلاعات اولیه هنگام ساخت دیتابیس در Asp.Net Core به پردازیم. شاید خیلی مواقع هنگام طراحی یک سایت نیاز داشته باشید یک سری اطلاعات مانند مدیر ارشد سایت و... را به صورت خودکار فقط یکبار در دیتابیس ثبت کنید.
کلاس Seed برای ثبت اطلاعات اولیه داخل دیتابیس مورد استفاده قرار می گیرد و در ادامه نحوه ایجاد کلاس Seed را مورد بررسی قرار می دهیم.
ابتدا یک کلاس به نام SeedData در پوشه Models ایجاد کنید و آن را به صورت زیر تغییر دهید
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using MvcAspCore.Data; namespace MvcAspCore.Models { /// <summary> /// این کلاس رو به صورت استایک تعریف کردیم که فقط یک بار در پروژه از آن استفاده کنیم /// کار این کلاس ثبت اطلاعات اولیه در دیتابیس /// </summary> public static class SeedData { public static void Initialize(IServiceProvider serviceProvider) { using (var context = new ApplicationDbContext (serviceProvider.GetRequiredService<DbContextOptions<ApplicationDbContext>>())) { // در این قسمت می توان هر شرطی را بررسی کرد if (context.Users.Any()) { return; } // اطلاعات جدید // کاربری که به این صورت اضافه شود اطلاعات کاربر به صورت ناقص در دیتابیس ثبت می شود context.Users.AddRange( new ApplicationUser { Email = "info@iranganj.com",UserName = "",PasswordHash = "P@ssw0rd"} //,new ApplicationUser { Email = "info@karkoo.ir",UserName = "",PasswordHash = "P@ssw0rd"} ); context.Posts.AddRange( new Post { PostCategoryId = 1, Name = "My Post Name", Description = "My Post Description" } ); context.SaveChanges(); // حالا باید این کانفیگور را به فایل استارتاپ و متد کانفیگور و بعد از تمام کدها اضافه کنیم //SeedData.Initialize(app.ApplicationServices); } } } }
در این کلاس بررسی کردیم در صورت عدم وجود یک کاربر در دیتابیس اطلاعات فوق در دیتابیس ثبت شود و شما می توانید این شرط را به هر صورتی که می خواهید تغییر و یا حتی از دستورات شرطی تودرتو استفاده کنید و اطلاعات اولیه خود را داخل دیتابیس ذخیره کنید.
و در نهایت باید کد زیر را به کلاس Startup و متد Configure و بعد از سایر کدها یعنی این خط کد باید آخرین دستور در این متد باشد اضافه کنید.
SeedData.Initialize(app.ApplicationServices);
نظر / سوال