Database seeding
Appearance
Database seeding is populating a database with an initial set of data. It is common to load seed data such as initial user accounts or dummy data upon initial setup of an application.
Entity Framework
\Migrations\Configuration.cs
public class ApplicationDatabaseInitializer : DropCreateDatabaseIfModelChanges<DbContext>
{
protected override void Seed(DbContext context)
{
var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
var RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
var username = "Alice";
var password = "password123";
var role = "Admin";
// Create role Admin if it does not exist
if (!RoleManager.RoleExists(role))
{
RoleManager.Create(new IdentityRole(role));
}
// Create user Alice
var user = new ApplicationUser() { UserName = username; };
var result = UserManager.Create(user, password);
// Add user Admin to role Admin
if (result.Succeeded)
{
var result = UserManager.AddToRole(user.Id, role);
}
}
}
Entity Framework Core
public class DataSeedingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder
.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=EFDataSeeding;Trusted_Connection=True");
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>(entity => { entity.Property(e => e.Url).IsRequired(); });
#region BlogSeed
modelBuilder.Entity<Blog>().HasData(new Blog { BlogId = 1, Url = "http://sample.com" });
#endregion
modelBuilder.Entity<Post>(
entity =>
{
entity.HasOne(d => d.Blog)
.WithMany(p => p.Posts)
.HasForeignKey("BlogId");
});
#region PostSeed
modelBuilder.Entity<Post>().HasData(
new Post { BlogId = 1, PostId = 1, Title = "First post", Content = "Test 1" });
#endregion
#region AnonymousPostSeed
modelBuilder.Entity<Post>().HasData(
new { BlogId = 1, PostId = 2, Title = "Second post", Content = "Test 2" });
#endregion
#region OwnedTypeSeed
modelBuilder.Entity<Post>().OwnsOne(p => p.AuthorName).HasData(
new { PostId = 1, First = "Andriy", Last = "Svyryd" },
new { PostId = 2, First = "Diego", Last = "Vega" });
#endregion
}
}
Symfony PHP Framework
AppBundle/DataFixtures/ORM/customer.yml (as in Version 1 of hautelook/AliceBundle )
AppBundle\Entity\User:
customer_{1..10}:
username: <username()>
email: <safeEmail()>
plainPassword: theLetterA
roles: [ROLE_SUPER_ADMIN]
enabled: true
Laravel PHP Framework
Laravel is an open source PHP framework for users working on Web application development. Considered as an alternative to CakePHP and Codelgniter, Laravel uses the Model-View-Controller (MVC) design pattern to facilitate development of Web applications in a quick and easy manner.https://codevelooper.com/laravel-framework-for-web-applications-with-php/
app/database/seeds/users.php
class DatabaseSeeder extends Seeder
{
public function run()
{
$this->call('UserTableSeeder');
$this->command->info('User table seeded!');
}
}
class UserTableSeeder extends Seeder
{
public function run()
{
DB::table('users')->delete();
User::create(array('email' => 'foo@bar.com'));
}
}
Command line
mysql -u username -p database_name < file.sql
pg_restore -h hostname -d database_name -U username file.sql
sqlcmd -S server_name\instance_name -i file.sql