
آموزش پیشرفته Data Seeding در EF Core
Data Seeding در EF Core یک تکنیک ضروری برای ایجاد دادههای پایه در EF Core و Asp.Net Core است. این قابلیت باعث میشود راهاندازی پروژه در محیطهای مختلف به راحتی انجام شود. Seeding به شما اجازه میدهد. تا بدون نیاز به اسکریپتهای SQL اطلاعات پایه را وارد کنید.
Data Seeding در EF Core چیست؟
در EF Core، منظور از DataSeeding یا «کاشت داده»، ثبت اطلاعات اولیه در پایگاهداده در هنگام ساخت یا بهروزرسانی آن است. این دادهها میتوانند شامل مواردی مثل دستهبندیها، نقشهای کاربری، تنظیمات سیستم، یا حتی کاربران پیشفرض باشند. EF Core این امکان را فراهم میکند تا بتوان اطلاعات پایه را هنگام اجرای دستورات migration یا database update به صورت خودکار در جدولها وارد کرد.
مزایای Data Seeding
- صرفهجویی در زمان هنگام راهاندازی پروژه
- جلوگیری از ورود دستی دادهها
- مناسب برای ایجاد اطلاعات تست یا دادههای ضروری
- افزایش قابلیت تکرارپذیری (reproducibility) در محیطهای مختلف (Dev، QA، Prod)
موارد استفاده Data Seeding
- نقشها (Roles) و کاربران پیشفرض (Admins)
- کشورها، استانها، زبانها
- تنظیمات اولیه (App Settings)
- دیتای دمو برای تست
نکته: باید مقدار Id به صورت دستی مشخص شود. چون EF Core هنگام Seed نمیتواند از Identity استفاده کند.
نمونه کد Data Seeding
modelBuilder.Entity<Category>().HasData(
new Category { Id = 1, Name = "موبایل" },
new Category { Id = 2, Name = "کتاب" },
new Category { Id = 3, Name = "پوشاک" }
);یک به یک – نمونه کد Data Seeding
//Model 1
modelBuilder.Entity<User>().HasData(
new User { Id = 1, Name = "علی" }
);
//Model 2
modelBuilder.Entity<UserProfile>().HasData(
new UserProfile { Id = 1, Bio = "برنامهنویس EF Core", UserId = 1 }
);یک به چند – نمونه کد Data Seeding
//Model 1
modelBuilder.Entity<Category>().HasData(
new Category { Id = 1, Title = "الکترونیک" },
new Category { Id = 2, Title = "ورزشی" }
);
//Model 2
modelBuilder.Entity<Product>().HasData(
new Product { Id = 1, Name = "موبایل", CategoryId = 1 },
new Product { Id = 2, Name = "تلویزیون", CategoryId = 1 },
new Product { Id = 3, Name = "توپ فوتبال", CategoryId = 2 }
);چند به چند – نمونه کد Data Seeding
//Model 1
modelBuilder.Entity<Student>().HasData(
new Student { Id = 1, FullName = "محمد رضایی" },
new Student { Id = 2, FullName = "زهرا احمدی" }
);
//Model 2
modelBuilder.Entity<Course>().HasData(
new Course { Id = 1, Title = "برنامهنویسی C#" },
new Course { Id = 2, Title = "بانک اطلاعاتی" }
);
//Model 3
modelBuilder.Entity<StudentCourse>().HasData(
new StudentCourse { StudentId = 1, CourseId = 1 },
new StudentCourse { StudentId = 1, CourseId = 2 },
new StudentCourse { StudentId = 2, CourseId = 1 }
);و در آخر به عنوان جمع بندی میتوان گفت. در Entity Framework Core، Data Seeding یا «کاشت داده» به معنی درج دادههای اولیه در پایگاهداده هنگام ایجاد یا بهروزرسانی آن توسط Migrations است. این قابلیت بیشتر برای مواردی کاربرد دارد که بخواهیم اطلاعات پایه مثل نقشهای پیشفرض، کشورها، تنظیمات اولیه اپلیکیشن یا کاربران اولیه را به طور خودکار در پایگاهداده قرار دهیم.































فرم افزودن دیدگاه
با ارسال نظرات خود ما را در ایجاد محتوای بهتر کمک کنید.