ef core insert data in migration code example
Example 1: add migration ef core
dotnet ef migrations add InitialCreate
Example 2: add migration ef core
dotnet ef database update
Example 3: how to seed data in EF
* Seed File [0/7]
- [ ] Create Seed Project
- mkdir Seeder; cd Seeder; dotnet new console;
- [ ] Manage Dependencies
- Add in references to your DbContexts in your Seeder.csproj like
<ItemGroup>
<ProjectReference Include="..\path\name.csproj" />
</ItemGroup>
- Add needed EF packages with dotnet add package <package>
- [ ] Create Seeder Class for <ClassNameToBeSeeded>
- mkdir Models/
- nano Models/classNameSeeder.cs
(or use your ide to manage files)
- [ ] Add data to be seeded in static methods
private static IList<ClassNameToBeSeeded> SeedData()
{
IList<ClassNameToBeSeeded> pages = new List<ClassNameToBeSeeded>();
pages.Add(new ClassNameToBeSeeded
{
variable = "something",
}
);
return pages;
}
- [ ] Add in call to persist objects through context
public static void SeedToDB()
{
var contextOptions = new DbContextOptionsBuilder<ContextName>()
.UseSqlServer("ConnectionString")
.Options;
var context = new ContextName(contextOptions);
context.Database.EnsureCreated();
var sections = classNameSeeder.SeedData();
context.<contextDbSet>.AddRange(sections);
context.SaveChanges();
}
- [ ] Call this in main
namespace Seeder
{
class Program
{
public static void Main(string[] args)
{
classNameSeeder.SeedToDB();
}
}
}
- [ ] Make sure your tables are created with migrations and run the program via
dotnet run
dotnet ef database update 0 --context <context>
dotnet ef database update --context <context>
Example 4: database hasData method C#
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Author>().HasData(
new Author
{
AuthorId = 1,
FirstName = "William",
LastName = "Shakespeare"
}
);
modelBuilder.Entity<Book>().HasData(
new Book { BookId = 1, AuthorId = 1, Title = "Hamlet" },
new Book { BookId = 2, AuthorId = 1, Title = "King Lear" },
new Book { BookId = 3, AuthorId = 1, Title = "Othello" }
);
/*further relational instructions may come here, like:
modelBuilder.Entity<Author>()
.HasMany<Book>(a => a.Books)
.WithOne(b => b.Author)
.HasForeignKey(b => b.AuthorId);
}