{"id":20,"date":"2020-03-22T10:32:00","date_gmt":"2020-03-22T13:32:00","guid":{"rendered":"https:\/\/dumba.dev.br\/?p=20"},"modified":"2026-01-05T10:37:31","modified_gmt":"2026-01-05T13:37:31","slug":"popular-tabelas-usando-code-first-entity-framework-core-seed-data","status":"publish","type":"post","link":"https:\/\/dumba.dev.br\/index.php\/2020\/03\/22\/popular-tabelas-usando-code-first-entity-framework-core-seed-data\/","title":{"rendered":"Popular tabelas usando Code First entity framework core (Seed Data)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Ol\u00e1 Devs,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hoje vamos falar sobre o Seed Data ou como popular uma tabela no banco de dados usando o Entity Framework (EF) Core Migrations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em um dia de correria, uma pessoa me perguntou como ele faria para popular as tabelas no banco de dados usando o Entity Framework (EF) no modelo Code First, ou seja, que codifico primeiro e depois crio meu banco de dados automaticamente usando o Entity Framework (EF) Core Migrations. Ele precisava popular ou fazer os inserts em tabelas auxiliares. Ai eu disse a ele: \u201cIsso \u00e9 Seed Data!!!\u201d. Recebi um sonoro \u201cHeinn??!!\u201d. \ud83d\ude00<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A baga\u00e7a \u00e9 simples.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para comunica\u00e7\u00e3o com o banco de dados no EF usamos o DbContext.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">public class EstoqueContext: DbContext\n{\n    public EstoqueContext(DbContextOptions&lt;EstoqueContext&gt; options) : base(options)\n    {\n\n    }\n\n    public DbSet&lt;Produto&gt; Produtos { get; set; }\n\n    protected override void OnModelCreating(ModelBuilder modelBuilder)\n    {\n        modelBuilder.ApplyConfiguration(new ProdutoMap());\n    }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Devemos fazer a sobrecarga do m\u00e9todo <em>OnModelCreating<\/em>. Nesse m\u00e9todo que informamos os mapeamentos que queremos fazer do projeto com o banco de dados. Nesse caso estou mapeando a Classe Produto com sua respectiva tabela. Uso o <a href=\"https:\/\/www.entityframeworktutorial.net\/efcore\/fluent-api-in-entity-framework-core.aspx\">Fluent API<\/a>. Veja a classe abaixo.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">public class ProdutoMap : IEntityTypeConfiguration&lt;Produto&gt;\n{\n    public void Configure(EntityTypeBuilder&lt;Produto&gt; builder)\n    {\n        builder.ToTable(\"produtos\");\n        builder.HasKey(x =&gt; x.Id);\n\n        builder.Property(x =&gt; x.Id).HasColumnName(\"id\");\n        builder.Property(x =&gt; x.Nome).HasColumnName(\"nome\").IsRequired().HasMaxLength(100);\n        builder.Property(x =&gt; x.QuantidadeEstoque).HasColumnName(\"quantidadeEstoque\").IsRequired();\n        builder.Property(x =&gt; x.Valor).HasColumnName(\"valor\").HasColumnType(\"decimal(15,2)\").IsRequired();\n\n        builder.Ignore(x =&gt; x.Erros);\n\n        builder.HasData(PopularProdutos());\n    }\n\n    private IList&lt;Produto&gt; PopularProdutos()\n    {\n        return new List&lt;Produto&gt;\n        {\n            new Produto(1, \"BMW X1\", 100, 200000M),\n            new Produto(2, \"BMW 320\", 100, 250000M),\n            new Produto(3, \"MERCEDES A200\", 100, 290000M),\n            new Produto(4, \"LAND EVOQUE\", 100, 350000M),\n            new Produto(5, \"FERRARI F40\", 100, 1250000M)\n        };\n    }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Aqui informo o mapeamento, mas o que importa est\u00e1 na chamada <em>builder.HasData(PopularProdutos())<\/em>. Esse m\u00e9todo espera uma lista dos seus produtos ou dos seus dados que precisar. Assim quando rodar o seu migrations ele vai preencher a tabela com esses dados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Uma outra forma de fazer<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos imaginar que j\u00e1 tem tudo feito com DataAnnotation ou qualquer outra forma de mapeamento. Basta na sobrecarga vista acima <em>OnModelCreating <\/em>mapear os dados.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">protected override void OnModelCreating(ModelBuilder modelBuilder)\n{\n\n    modelBuilder.Entity&lt;Produto&gt;().HasData(new List&lt;Produto&gt;\n    {\n        new Produto(1, \"BMW X1\", 100, 200000M),\n        new Produto(2, \"BMW 320\", 100, 250000M),\n        new Produto(3, \"MERCEDES A200\", 100, 290000M),\n        new Produto(4, \"LAND EVOQUE\", 100, 350000M),\n        new Produto(5, \"FERRARI F40\", 100, 1250000M)\n    });\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Mel na chupeta!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No meu <a href=\"https:\/\/github.com\/danilodumba\/microservices-rebus\">GitHub<\/a> tem os fontes de um projeto com esses exemplos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Procure o EstoqueContext nesse reposit\u00f3rio que ver\u00e1 o exemplo.<br><br><strong>fiqueemcasa e tamo junto!<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 Devs, Hoje vamos falar sobre o Seed Data ou como popular uma tabela no banco de dados usando o Entity Framework (EF) Core Migrations. Em um dia de correria, uma pessoa me perguntou como ele faria para popular as tabelas no banco de dados usando o Entity Framework (EF) no modelo Code First, ou [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":23,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[5,6,4],"class_list":["post-20","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-net","tag-net","tag-backend","tag-c"],"_links":{"self":[{"href":"https:\/\/dumba.dev.br\/index.php\/wp-json\/wp\/v2\/posts\/20","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dumba.dev.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dumba.dev.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dumba.dev.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dumba.dev.br\/index.php\/wp-json\/wp\/v2\/comments?post=20"}],"version-history":[{"count":2,"href":"https:\/\/dumba.dev.br\/index.php\/wp-json\/wp\/v2\/posts\/20\/revisions"}],"predecessor-version":[{"id":22,"href":"https:\/\/dumba.dev.br\/index.php\/wp-json\/wp\/v2\/posts\/20\/revisions\/22"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dumba.dev.br\/index.php\/wp-json\/wp\/v2\/media\/23"}],"wp:attachment":[{"href":"https:\/\/dumba.dev.br\/index.php\/wp-json\/wp\/v2\/media?parent=20"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dumba.dev.br\/index.php\/wp-json\/wp\/v2\/categories?post=20"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dumba.dev.br\/index.php\/wp-json\/wp\/v2\/tags?post=20"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}