Data Seeding در EF Core یک تکنیک ضروری برای ایجاد دادههای پایه در EF Core و Asp.Net Core است. این قابلیت باعث میشود راهاندازی پروژه در محیطهای مختلف به راحتی انجام شود. Seeding به شما اجازه میدهد. تا بدون نیاز به اسکریپتهای SQL اطلاعات پایه را وارد کنید.
در EF Core، منظور از DataSeeding یا «کاشت داده»، ثبت اطلاعات اولیه در پایگاهداده در هنگام ساخت یا بهروزرسانی آن است. این دادهها میتوانند شامل مواردی مثل دستهبندیها، نقشهای کاربری، تنظیمات سیستم، یا حتی کاربران پیشفرض باشند. EF Core این امکان را فراهم میکند تا بتوان اطلاعات پایه را هنگام اجرای دستورات migration یا database update به صورت خودکار در جدولها وارد کرد.
نکته: باید مقدار Id به صورت دستی مشخص شود. چون EF Core هنگام Seed نمیتواند از Identity استفاده کند.
modelBuilder.Entity<Category>().HasData(
new Category { Id = 1, Name = "موبایل" },
new Category { Id = 2, Name = "کتاب" },
new Category { Id = 3, Name = "پوشاک" }
);
//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 }
);
//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 }
);
//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 است. این قابلیت بیشتر برای مواردی کاربرد دارد که بخواهیم اطلاعات پایه مثل نقشهای پیشفرض، کشورها، تنظیمات اولیه اپلیکیشن یا کاربران اولیه را به طور خودکار در پایگاهداده قرار دهیم.