{"id":21046265,"url":"https://github.com/alfredo1995/entity-framewok","last_synced_at":"2026-02-08T16:02:08.801Z","repository":{"id":125101521,"uuid":"398909753","full_name":"alfredo1995/entity-framewok","owner":"alfredo1995","description":"Ordering system with Context classes, mapping using Fluent API and DataAnnotations (Entity Framework Core 6.0)","archived":false,"fork":false,"pushed_at":"2025-01-14T16:50:25.000Z","size":6067,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-12T16:13:35.244Z","etag":null,"topics":["csharp","dotnet","entity-framework-core"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alfredo1995.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-08-22T22:00:47.000Z","updated_at":"2025-01-14T16:50:29.000Z","dependencies_parsed_at":"2023-10-02T01:37:25.406Z","dependency_job_id":"0c395706-b285-4a12-b784-47084be1916c","html_url":"https://github.com/alfredo1995/entity-framewok","commit_stats":null,"previous_names":["alfredo1995/entity-framewok"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alfredo1995/entity-framewok","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alfredo1995%2Fentity-framewok","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alfredo1995%2Fentity-framewok/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alfredo1995%2Fentity-framewok/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alfredo1995%2Fentity-framewok/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alfredo1995","download_url":"https://codeload.github.com/alfredo1995/entity-framewok/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alfredo1995%2Fentity-framewok/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29236125,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T14:18:14.570Z","status":"ssl_error","status_checked_at":"2026-02-08T14:18:14.071Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","dotnet","entity-framework-core"],"created_at":"2024-11-19T14:28:43.835Z","updated_at":"2026-02-08T16:02:08.783Z","avatar_url":"https://github.com/alfredo1995.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"Creating an Ordering API in the Console\n \n\tCreate one Brank Solution \u003e  dentro da solution criar um novo projeto CONSOLE \n\nInstalling SQL Server Package\n\n\tdotnet add  Curso\\CursoEFCore.csproj package Microsoft.EntityFrameworkCore.SqlServer --version 3.1.5\n\ninstalling SQL Server Package via Pack Nuget \n\n\tProject dependency \u003e  right button \u003e Manage Nuget Package \n \ncreate the DOMAIN and ValuesObjects folder \u003e within the CursoEFCore Console project\n\n\tIn the folder CursoEFCore \u003e ValuesObjects  \u003e Create Enum classes with properties\n\nCursoEFCore \u003e ValuesObjects  \u003e  StatusPedidos.cs  \n          \n\tnamespace EFCore.Obejct \n\t{  \n\t    public enum StatusPedido   \n\t    {\n\t        Analise,\n\t\tFizalizado,\n\t\tEntregue,\n\t    } \n\t}\n\nCursoEFCore \u003e ValuesObjects  \u003e  TipoFrete.cs\n\t\n\tusing System;\n\tusing System.Collections.Generic;\n\tusing System.Text;\n\n\tnamespace EFCore.Obejct\n\t{\n\t    namespace CursoEFCore.ValuesObject\n\t    {\n\t\tpublic enum TipoFrete\n\t\t{\n\t\t    CIF,\n\t\t    FOB,\n\t\t    SemFrete,\n\t\t}\n\t    }\n\t}\n\n\nCursoEFCore \u003e ValuesObjects  \u003e  TipoProduto.cs\n\t\n\tnamespace EFCore.Obejct\n\t{\n\t    namespace CursoEFCore.ValuesObject\n\t    {\n\t\tpublic enum TipoProduto\n\t\t{\n\t\t    MecadoriaParaRevenda,\n\t\t    Embalagem,\n\t\t    Serviço, \n\t\t}\n\t    }\n\t}\n\n\nCursoEFCore \u003e Domain\u003e  Cliente.cs\n\n\tnamespace CursoEFCore.Domain\n\t{\n\t    public class Cliente\n\t    {\n\t\tpublic int Id { get; set; }\n\t\tpublic string CodigoBarras { get; set; }\n\t\tpublic string Descricao { get; set; }\n\t\tpublic decimal Valor { get; set; }\n\t\tpublic TipoProduto TipoProduto { get; set; }\n\t\tpublic bool Ativo { get; set; }\n\t    }\n\t}\n\n\nCursoEFCore \u003e Domain\u003e  Produto.cs\n\n\tnamespace CursoEFCore.Domain\n\t{\n\t    public class Produto\n\t    {\n\t\tpublic int Id { get; set; }\n\t\tpublic string Nome { get; set; }\n\t\tpublic string Telefone { get; set; }\n\t\tpublic string CEP { get; set; }\n\t\tpublic string Estado { get; set; }\n\t\tpublic string cidade { get; set; }\n\t    }\n\t}\n\n\nCursoEFCore \u003e Domain\u003e  Pedido.cs\n\t\n\tnamespace CursoEFCore.Domain\n\t{\n\t    public class Pedido\n\t    {\n\t\tpublic int Id { get; set; }\n\t\tpublic int ClienteId { get; set; }\n\t\tpublic Cliente Cliente { get; set; }\n\t\tpublic DateTime IniciadoEm { get; set; }\n\t\tpublic DateTime FizalizadoEm { get; set; }\n\t\tpublic TipoFrete TipoFrete { get; set; }\n\t\tpublic StatusPedido Status { get; set; }\n\t\tpublic string Observacao { get; set; }\n\t\tpublic ICollection\u003cPedidoItem\u003e Intes { get; set; }\n\t    }\n\t}\n\n\nCursoEFCore \u003e Domain\u003e  PedidoItem.cs\n\n\tnamespace CursoEFCore.Domain\n\t{\n\t    public class PedidoItem\n\t    {\n\t\tpublic int Id { get; set; }\n\t\tpublic int PedidoId { get; set; }\n\t\tpublic Pedido Pedido { get; set; }\n\t\tpublic Produto Produto { get; set; }\n\t\tpublic int Quatidade { get; set; }\n\t\tpublic decimal Desconto { get; set; }\n\t    }\n\t}\n\nCria class de contexto DbContext\n\n\tcriar dentro de CursoEFCore \u003e pasta DATA\n\nCursoEFCore \u003e Data\u003e ApplicationContext.cs : herdando de DbContext\n\n\tnamespace CursoEFCore.Data\n\t{\n\t    class ApplicationContext : DbContext\n\t    {\n\t\tpublic DbSet\u003cPedido\u003e Pedidos { get; set; }\n\t\tprotected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n\t\t{\n\t\t    optionsBuilder.UseSqlServer(\"Data source=(localdb)\\\\mssqllocaldb;Initial Catalag=CursoEFCore;Integrated Secury=true\");\n\t\t}\n\n\t\t// protected override void OnModelCreating(MoldelBuilder modelBuilder) { modelBuilder.Entity\u003cPedido\u003e();}\n\t    }\n\t}\n\t\nCursoEFCore \u003e Data\u003e ApplicationContext.cs sobreescrevendo os metodos\n\t\n\t \n\tnamespace CursoEFCore.Data\n\t{\n\t    class ApplicationContext : DbContext\n\t    {\n\t\tpublic DbSet\u003cPedido\u003e Pedidos { get; set; }\n\t\tprotected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n\t\t{\n\t\t    optionsBuilder.UseSqlServer(\"Data source=(localdb)\\\\mssqllocaldb;Initial Catalag=CursoEFCore;Integrated Secury=true\");\n\t\t}\n\t    }\n\t}\n\nMapeamento atraves Fluent API\n\t\n\tusing CursoEFCore.Domain;\n\tusing Microsoft.EntityFrameworkCore;\n\tusing System;\n\tusing System.Collections.Generic;\n\tusing System.Text;\n\n\tnamespace CursoEFCore.Data\n\t{\n\t\tclass ApplicationContext : DbContext\n\t\t{\n\t\tpublic DbSet\u003cPedido\u003e Pedidos { get; set; }\n\t\tprotected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n\t\t{\n\t\t\toptionsBuilder.UseSqlServer(\"Data source=(localdb)\\\\mssqllocaldb;Initial Catalog=EFCore;Integrated Security=true\");\n\t\t}\n\n\t\tprotected override void OnModelCreating(ModelBuilder modelBuilder)\n\t\t{\n\t\t\tmodelBuilder.Entity\u003cCliente\u003e(p =\u003e\n\t\t\t{\n\t\t\t\tp.ToTable(\"Cliente\");\n\t\t\t\tp.HasKey(p =\u003e p.Id);\n\t\t\t\tp.Property(p =\u003e p.Nome).HasColumnType(\"VARCHAR(80)\").IsRequired();\n\t\t\t\tp.Property(p =\u003e p.Telefone).HasColumnType(\"CHAR(11)\").IsRequired();\n\t\t\t\tp.Property(p =\u003e p.CEP).HasColumnType(\"CHAR(8)\").IsRequired();\n\t\t\t\tp.Property(p =\u003e p.Estado).HasColumnType(\"CHAR(8)\").IsRequired();\n\t\t\t\tp.Property(p =\u003e p.Cidade).HasMaxLength(60).IsRequired();\n\n\t\t\t\t//p.HasIndex(i =\u003e i.Telefone).HasName(\"idx_cliente_telefone\");\n\t\t\t});\n\n\t\t\tmodelBuilder.Entity\u003cProduto\u003e(p =\u003e\n\t\t\t{\n\t\t\t\tp.ToTable(\"Produto\");\n\t\t\t\tp.HasKey(p =\u003e p.Id);\n\t\t\t\tp.Property(p =\u003e p.CodigoBarras).HasColumnType(\"VARCHAR(80)\").IsRequired();\n\t\t\t\tp.Property(p =\u003e p.Descricao).HasColumnType(\"CHAR(11)\").IsRequired();\n\t\t\t\tp.Property(p =\u003e p.Valor).IsRequired();\n\t\t\t});\n\n\t\t\tmodelBuilder.Entity\u003cPedido\u003e(p =\u003e\n\t\t\t{\n\t\t\t\tp.ToTable(\"Pedido   \");\n\t\t\t\tp.HasKey(p =\u003e p.Id);\n\t\t\t\tp.Property(p =\u003e p.IniciadoEm).HasDefaultValueSql(\"GETDATA(80)\").IsRequired();\n\t\t\t\tp.Property(p =\u003e p.Status).HasConversion\u003cstring\u003e();\n\t\t\t\tp.Property(p =\u003e p.TipoFrete).HasConversion\u003cint\u003e();\n\t\t\t\tp.Property(p =\u003e p.Observacao).HasColumnType(\"CHAR(502)\").IsRequired();\n\n\t\t\t\t//\tp.HasMany(p =\u003e p.Intens;\n\t\t\t\t//   .WithOne(p =\u003e p.Pedido)\n\t\t\t\t//.OnDelete(DeleteBehavior.Cascade);\n\t\t\t\t//});\n\n\t\t\t\tmodelBuilder.Entity\u003cPedidoItem\u003e(p =\u003e\n\t\t\t\t{\n\t\t\t\t\tp.ToTable(\"PedidoIntem\");\n\t\t\t\t\tp.HasKey(p =\u003e p.Id);\n\t\t\t\t\tp.Property(p =\u003e p.Quantidade).HasDefaultValue(1).IsRequired();\n\t\t\t\t\tp.Property(p =\u003e p.Valor).IsRequired();\n\t\t\t\t\tp.Property(p =\u003e p.Desconto).IsRequired();\n\t\t\t\t});\n\t\t\t});\t}}}\n\n\nMapeamendo modelo de dados em arquivos separados\n\t\n\tCursoEFCore \u003e Data \u003e criar a pasta Configurations \u003e criar o arquivo \u003e ClientConfiguration.cs\n\t\n\tusing System;\n\tusing System.Collections.Generic;\n\tusing System.Text;\n\n\tnamespace CursoEFCore.Data.Configuration\n\t{\n\t    public class ClienteConfiguration\n\t    {\n\n\t    }\n\t}\n\nimplementar uma class IEntityType informando a entidade ClientConfiguration.cs\n\n\t\n\tusing CursoEFCore.Domain;\n\tusing Microsoft.EntityFrameworkCore;\n\tusing System;\n\tusing System.Collections.Generic;\n\tusing System.Text;\n\n\tnamespace CursoEFCore.Data.Configuration\n\t{\n\t    public class ClienteConfiguration : IEntityTypeConfiguration\u003cCliente\u003e\n\t    {\n\n\t    }\n\t}\n\nimplementando a interface \n\n\tusing CursoEFCore.Domain;\n\tusing Microsoft.EntityFrameworkCore;\n\tusing Microsoft.EntityFrameworkCore.Metadata.Builders;\n\tusing System;\n\tusing System.Collections.Generic;\n\tusing System.Text;\n\n\tnamespace CursoEFCore.Data.Configuration\n\t{\n\t    public class ClienteConfiguration : IEntityTypeConfiguration\u003cCliente\u003e\n\t    {\n\t\tpublic void Configure(EntityTypeBuilder\u003cCliente\u003e builder)\n\t\t{\n\t\t    throw new NotImplementedException();\n\t\t}\n\t    }\n\t}\t\n\t\nreaproventado a propriedade da entidade cliente\n\n\tusing Microsoft.EntityFrameworkCore.Metadata.Builders;\n\tusing System;\n\tusing System.Collections.Generic;\n\tusing System.Text;\n\n\tnamespace CursoEFCore.Data.Configuration\n\t{\n\t    public class ClienteConfiguration : IEntityTypeConfiguration\u003cCliente\u003e\n\t    {\n\t\tpublic void Configure(EntityTypeBuilder\u003cCliente\u003e builder)\n\t\t{\n\t\t    builder.ToTable(\"Cliente\");\n\t\t    builder.HasKey(p =\u003e p.Id);\n\t\t    builder.Property(p =\u003e p.Nome).HasColumnType(\"VARCHAR(80)\").IsRequired();\n\t\t    builder.Property(p =\u003e p.Telefone).HasColumnType(\"CHAR(11)\").IsRequired();\n\t\t    builder.Property(p =\u003e p.CEP).HasColumnType(\"CHAR(8)\").IsRequired();\n\t\t    builder.Property(p =\u003e p.Estado).HasColumnType(\"CHAR(8)\").IsRequired();\n\t\t    builder.Property(p =\u003e p.Cidade).HasMaxLength(60).IsRequired();\n\n\t\t    //builder.HasIndex(i =\u003e i.Telefone).HasName(\"idx_cliente_telefone\");\n\t\t}\n\t    }\n\nreaproventado a propriedade da entidade Produto\n\n\tusing CursoEFCore.Domain;\n\tusing Microsoft.EntityFrameworkCore;\n\tusing Microsoft.EntityFrameworkCore.Metadata.Builders;\n\tusing System;\n\tusing System.Collections.Generic;\n\tusing System.Text;\n\n\tnamespace CursoEFCore.Data.Configuration\n\t{\n\t    public class ProdutoConfiguration : IEntityTypeConfiguration\u003cProduto\u003e\n\t    {\n\t\tpublic void Configure(EntityTypeBuilder\u003cProduto\u003e builder)\n\t\t{\n\t\t    builder.ToTable(\"Produto\");\n\t\t    builder.HasKey(p =\u003e p.Id);\n\t\t    builder.Property(p =\u003e p.CodigoBarras).HasColumnType(\"VARCHAR(80)\").IsRequired();\n\t\t    builder.Property(p =\u003e p.Descricao).HasColumnType(\"CHAR(11)\").IsRequired();\n\t\t    builder.Property(p =\u003e p.Valor).IsRequired();\n\n\t\t    //builder.HasIndex(i =\u003e i.Telefone).HasName(\"idx_cliente_telefone\");\n\t\t}\n\t    }\n\t}\n\nApplicationContext\n\n\tusing CursoEFCore.Domain;\n\tusing Microsoft.EntityFrameworkCore;\n\tusing System.Collections.Generic;\n\n\tnamespace CursoEFCore.Data\n\t{\n\t    class ApplicationContext : DbContext\n\t    {\n\t\tpublic DbSet\u003cPedido\u003e Pedidos { get; set; }\n\t\tprotected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n\t\t{\n\t\t    optionsBuilder.UseSqlServer(\"Data source=(localdb)\\\\mssqllocaldb;Initial Catalog=EFCore;Integrated Securuty=true\");\n\t\t}\n\n\t\tprotected override void OnModelCreating(ModelBuilder modelBuilder)\n\n\t\t{\n\t\t    modelBuilder.Entity\u003cCliente\u003e(p =\u003e\n\t\t    {\n\t\t\tp.ToTable(\"Cliente\");\n\t\t\tp.HasKey(p =\u003e p.Id);\n\t\t\tp.Property(p =\u003e p.Nome).HasColumnType(\"VARCHAR(80)\").IsRequired();\n\t\t\tp.Property(p =\u003e p.Telefone).HasColumnType(\"CHAR(11)\").IsRequired();\n\t\t\tp.Property(p =\u003e p.CEP).HasColumnType(\"CHAR(8)\").IsRequired();\n\t\t\tp.Property(p =\u003e p.Estado).HasColumnType(\"CHAR(8)\").IsRequired();\n\t\t\tp.Property(p =\u003e p.Cidade).HasMaxLength(60).IsRequired();\n\n\t\t\t//p.HasIndex(i =\u003e i.Telefone).HasName(\"idx_cliente_telefone\");\n\t\t    });\n\n\t\t    modelBuilder.Entity\u003cProduto\u003e(p =\u003e\n\t\t    {\n\t\t\tp.ToTable(\"Produto\");\n\t\t\tp.HasKey(p =\u003e p.Id);\n\t\t\tp.Property(p =\u003e p.CodigoBarras).HasColumnType(\"VARCHAR(80)\").IsRequired();\n\t\t\tp.Property(p =\u003e p.Descricao).HasColumnType(\"CHAR(11)\").IsRequired();\n\t\t\tp.Property(p =\u003e p.Valor).IsRequired();\n\t\t    });\n\n\t\t    modelBuilder.Entity\u003cPedido\u003e(p =\u003e\n\t\t    {\n\t\t\tp.ToTable(\"Pedido  \");\n\t\t\tp.HasKey(p =\u003e p.Id);\n\t\t\tp.Property(p =\u003e p.IniciadoEm).HasDefaultValueSql(\"GetDate()\").IsRequired();\n\t\t\tp.Property(p =\u003e p.Status).HasConversion\u003cstring\u003e();\n\t\t\tp.Property(p =\u003e p.TipoFrete).HasConversion\u003cint\u003e();\n\t\t\tp.Property(p =\u003e p.Observacao).HasColumnType(\"CHAR(502)\").IsRequired();\n\n\n\t\t\tmodelBuilder.Entity\u003cPedidoItem\u003e(p =\u003e\n\t\t\t{\n\t\t\t    p.ToTable(\"PedidoIntem\");\n\t\t\t    p.HasKey(p =\u003e p.Id);\n\t\t\t    p.Property(p =\u003e p.Quantidade).HasDefaultValue(1).IsRequired();\n\t\t\t    p.Property(p =\u003e p.Valor).IsRequired();\n\t\t\t    p.Property(p =\u003e p.Desconto).IsRequired();\n\t\t\t});\n\t\t    });\n\t\t}\n\t    }\n\t}\n\t\n\t\napos criar as class representando a entidade ApplicationContext pode apagar as propriedades\n\n\tusing CursoEFCore.Domain;\n\tusing Microsoft.EntityFrameworkCore;\n\tusing System.Collections.Generic;\n\n\tnamespace CursoEFCore.Data\n\t{\n\t    class ApplicationContext : DbContext\n\t    {\n\t\tpublic DbSet\u003cPedido\u003e Pedidos { get; set; }\n\t\tprotected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n\t\t{\n\t\t    optionsBuilder.UseSqlServer(\"Data source=(localdb)\\\\mssqllocaldb;Initial Catalog=EFCore;Integrated Security=true\");\n\t\t}\n\n\t\tprotected override void OnModelCreating(ModelBuilder modelBuilder)\n\n\t\t{\n\t\t}\n\t    }\n\t}\n\t\naplication configuration\t\n\n\tusing CursoEFCore.Data.Configuration;\n\tusing CursoEFCore.Domain;\n\tusing Microsoft.EntityFrameworkCore;\n\tusing System.Collections.Generic;\n\n\tnamespace CursoEFCore.Data\n\t{\n\t    class ApplicationContext : DbContext\n\t    {\n\t\tpublic DbSet\u003cPedido\u003e Pedidos { get; set; }\n\t\tprotected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n\t\t{\n\t\t    optionsBuilder.UseSqlServer(\"Data source=(localdb)\\\\mssqllocaldb;Initial Catalog=EFCore;Integrated Security=true\");\n\t\t}\n\n\t\tprotected override void OnModelCreating(ModelBuilder modelBuilder)\n\n\t\t{\n\t\t\t\n\t\t    modelBuilder.ApplyConfigurationsFromAssembly(typeof(ApplicationContext).Assembly);\n\n\t\t    modelBuilder.ApplyConfiguration(new ClienteConfiguration());\n\t\t    modelBuilder.ApplyConfiguration(new PedidoConfiguration());\n                    modelBuilder.ApplyConfiguration(new PedidoItemConfiguration());\n                    modelBuilder.ApplyConfiguration(new ProdutoConfiguration());\n\t\t}\n\t    }\n\t}\n\t\n\t\nUtilizando DataAnnotations\tDomain  \u003e Cliente.cs \u003e adicior atributos key, required, table e Column ()\n\t\n\tusing EFCore.Obejct.CursoEFCore.ValuesObject;\n\tusing System;\n\tusing System.Collections.Generic;\n\tusing System.Text;\n\tusing System.ComponentModel.DataAnnotations;\n\tusing System.ComponentModel.DataAnnotations.Schema;\n\n\tnamespace CursoEFCore.Domain\n\t{\n\n\t\t[Table(\"Clientes\")]\n\t\tpublic class Cliente\n\t\t{\n\t\t[key]\n\t\tpublic int Id { get; set; }\n\n\t\t[Required]\n\t\tpublic string CodigoBarras { get; set; }\n\t\tpublic string Descricao { get; set; }\n\n\t\t[Coloumn()]\n\t\tpublic decimal Valor { get; set; }\n\n\t\tpublic TipoProduto TipoProduto { get; set; }\n\t\tpublic bool Ativo { get; set; }\n\t\tpublic string Nome { get; internal set; }\n\t\tpublic string Telefone { get; internal set; }\n\t\tpublic string CEP { get; internal set; }\n\t\tpublic string Cidade { get; internal set; }\n\t\tpublic string Estado { get; internal set; }\n\t    }\n\t}\n\t\n\t\nHabilitando Migrações\n\t\n\tintalar o pacote Microsoft.EntityFrameworkCore.Design e Microsoft.EntityFrameworkCore.Tools\n\n\tdotnet tool install --global dotnet-ef --version 3.1.5\n\nComando no Package Nuget Console\n\n\tget-help entityframework\n\tdotnet ef migrations add teste\n\tdotnet ef migrations add PrimeiraMigracao -p .\\EFCore\\EFCore.csproj\n\n\tAdd-Migration NovaMigration\n\tUpdate-Database\n\n\ngerando script SQL passando .\\pasta\\solutionProjet\n\t\n\tterminal : dotnet ef migrations Script -o .\\Script\\PrimeiraMigracao.SQL\n\t           dotnet ef migrations script -p .\\EFCore\\EFCore.csproj -o .\\EFCore\\PrimeiraMigracao.SQL\n\t\nAplicando a migração no Banco de Dados\n\n\tdotnet ef database update -p .\\EFCore\\EFCore.csproj -v\n\tdotnet ef migrations add AdicionarEmail -p .\\EFCore\\EFCore.csproj -v\n\t\nInserido Registro com Entity Framework Core / ApplicationContext\n\t\n\tpublic DbSet\u003cCliente\u003e Clientes { get; set; }\n\tpublic DbSet\u003cPedido\u003e Pedidos { get; set; }\n\tpublic DbSet\u003cProduto\u003e Produtos { get; set; }\n\t\nCriar metodo e instancia na entidade Programa.cs\n\n\tpublic static void InserirDados(){\n\t var produto = new Produto{\n\t\tDescricao = \"Produto Teste\",\n\t\tCodigoBarras = \"123456789\",\n\t\tValor= 10,\n\t\tTipoProduto = TipoProduto.MercadoriaParaRevenda,\n\t\tAtivo = true\t};\n\t\t\nCriar metodo e instancia na entidade Programa.cs\n\n\tusing CursoEFCore.Domain;\n\tusing EFCore.Obejct.CursoEFCore.ValuesObject;\n\tusing System;\n\n\tnamespace EFCore\n\t{\n\t    class Program\n\t    {\t\t\n\t\tstatic void Main(string[] args)\n\t\t{\n\t\t    InserirDados();\n\t\t}\n\n\t\tprivate static void InserirDados()\n\t\t{\n\t\t    var produto = new Produto\n\t\t    {\n\t\t\tDescricao = \"Produto Teste\",\n\t\t\tCodigoBarras = \"123456789\",\n\t\t\tValor = 10,\n\t\t\tTipoProduto = TipoProduto.MercadoriaParaRevenda,\n\t\t\tAtivo = true\n\n\t\t    };\n\n\t\t    //preparar o objeto para instancia\n\t\t    using var db = new Data.ApplicationContext();\n\t\t    \n\t\t    //4 formas de adicionar instancia do objeto\n\t\t    db.Produtos.Add(produto);\n\t\t    db.Set\u003cProduto\u003e().Add(produto);\n\t\t    db.Entity(produto).State = EntityState.Added;\n\t\t    db.Add(produto);\n\t\t\n\t\t    //salvando o rastreamento que EFCore alocou em memoria\n\t\t    var registro = db.SaveChanges();\n\n\t\t    Console.WriteLine($\"Total registro\");\n\t\t}\n\t    }\n\t}\n\t\nInserindo os registro usando terminal \n\n\tdotnet run\n\nadicionar pacote de log\n\n\ttodas as instruçoes geradas pelo efcore sejam escritas no console da aplicação\n\t\nterminal console gerenciador de pacotes\n\n\tdotnet add package Microsoft.Extensions.Logging.Console --Version 3.1.5\n\nAplicationContext informar a instancia do log criado\n\n\tclass ApplicationContext : DbContext\n\t{\n\t\tprivate static readonly ILoggerFactory _logger = LoggerFactory.Create(p=\u003ep.AddConsole());\n\t\t\nAplicationContext metodo OnConfiguring informando o log a ser executado\n\n\tprotected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n\t\t{\n\t\t\toptionsBuilder\n\t\t\t\t.UseLoggerFactory(_logger)\n\t\t\t\t.EnableSensitiveDataLogging()\n\t\t\t\t\nEntidade AplicationContext\n\n\tusing EFCore.Data.Configuration;\n\tusing EFCore.Domain;\n\tusing Microsoft.EntityFrameworkCore;\n\tusing Microsoft.Extensions.Logging;\n\tusing System.Collections.Generic;\n\n\tnamespace EFCore.Data\n\t{\n\t\tclass ApplicationContext : DbContext\n\t\t{\n\t\t\tprivate static readonly ILoggerFactory _logger = LoggerFactory.Create(p=\u003ep.AddConsole());\n\n\t\t\tpublic DbSet\u003cPedido\u003e Pedidos { get; set; }\n\t\t\tpublic DbSet\u003cPedido\u003e Produtos { get; set; }\n\t\t\tpublic DbSet\u003cPedido\u003e Clientes { get; set; }\n\n\t\t\tprotected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n\t\t\t{\n\t\t\t\toptionsBuilder\n\t\t\t\t\t.UseLoggerFactory(_logger)\n\t\t\t\t\t.EnableSensitiveDataLogging()\n\t\t\t\t\t.UseSqlServer(\"Data source=(localdb)\\\\mssqllocaldb;Initial Catalog=EFCore; Integrated Security=true\");\n\t\t\t}\n\n\t\t\tprotected override void OnModelCreating(ModelBuilder modelBuilder)\n\n\t\t\t{\n\n\t\t\t\tmodelBuilder.ApplyConfigurationsFromAssembly(typeof(ApplicationContext).Assembly);\n\n\t\t\t\tmodelBuilder.ApplyConfiguration(new ClienteConfiguration());\n\t\t\t\tmodelBuilder.ApplyConfiguration(new PedidoConfiguration());\n\t\t\t\tmodelBuilder.ApplyConfiguration(new PedidoItemConfiguration());\n\t\t\t\tmodelBuilder.ApplyConfiguration(new ProdutoConfiguration());\n\t\t\t}\n\t\t}\n\t}\n\n\ninserindo registro em massa ao criar novo metodo na entidade Programa.cs\n\n    public static void InserirDadosEmMassa()\n        {\n            var produto = new Produto\n            {\n                Descricao = \"Produto Teste\",\n                CodigoBarras = \"123456789\",\n                TipoProduto = TipoProduto.MercadoriaParaRevenda,\n                Ativo = true\n\n            };\n\n            var cliente = new Cliente\n            {\n                Nome = \"Alfredo Gomes\",\n                CEP = \"31990055\",\n                Cidade = \"Belo Horizonte\",\n                Estado = \"MG\",\n                Telefone = \"31995358198\"\n            };\n\ncriando instancia do contexto Programa.cs\n\n            using var db = new Data.ApplicationContext();\n\n            db.AddRange(produto, cliente);\n\n            var registros = db.SaveChanges();\n            Console.WriteLine($\"Total Registro(s): {registros}\");\n\n        }  \n  \nalterar o  recebimento no static void main de InserirDados para InserirDadosEmMassa\n\n\tstatic void Main(string[] args)\n\t\t{\n\t\t    InserirDadosEmMassa();\n\t\t}\n\t\t\nEntidade Programa.cs\n\n\tusing EFCore.Domain;\n\tusing EFCore.Obejct.EFCore.ValuesObject;\n\tusing System;\n\n\tnamespace EFCore\n\t{\n\t    class Program\n\t    {\n\t\tstatic void Main(string[] args)\n\t\t{\n\t\t    InserirDadosEmMassa();\n\t\t}\n\t\t\n\t\tpublic static void InserirDadosEmMassa()\n\t\t{\n\t\t    var produto = new Produto\n\t\t    {\n\t\t\tDescricao = \"Produto Teste\",\n\t\t\tCodigoBarras = \"123456789\",\n\t\t\tTipoProduto = TipoProduto.MercadoriaParaRevenda,\n\t\t\tAtivo = true\n\n\t\t    };\n\n\t\t    var cliente = new Cliente\n\t\t    {\n\t\t\tNome = \"Alfredo Gomes\",\n\t\t\tCEP = \"31990055\",\n\t\t\tCidade = \"Belo Horizonte\",\n\t\t\tEstado = \"MG\",\n\t\t\tTelefone = \"31995358198\"\n\t\t    };\n\n\t\t    //criando instancia do contexto\n\t\t    using var db = new Data.ApplicationContext();\n\n\t\t    db.AddRange(produto, cliente);\n\n\t\t    var registros = db.SaveChanges();\n\t\t    Console.WriteLine($\"Total Registro(s): {registros}\");\n\n\t\t}       \n\n\n\t\tprivate static void InserirDados()\n\t\t{\n\t\t    var produto = new Produto\n\t\t    {\n\t\t\tDescricao = \"Produto Teste\",\n\t\t\tCodigoBarras = \"123456789\",\n\t\t\tTipoProduto = TipoProduto.MercadoriaParaRevenda,\n\t\t\tAtivo = true\n\n\t\t    };\n\n\t\t    //criando instancia do contexto\n\t\t    using var db = new Data.ApplicationContext();\n\t\t    //db.Produtos.Add(produto);\n\t\t    db.Set\u003cProduto\u003e().Add(produto);\n\t\t    //db.Entity(produto).State = EntityState.Added;\n\t\t    //db.Add(produto);\n\n\t\t    var registro = db.SaveChanges();\n\n\t\t    Console.WriteLine($\"Total registro\");\n\t\t}\n\t    }\n\t}\n  \n  \nrodar as alterações no terminal \n  \n  \tdotnet run\n\t\nconsultando registro da base dados program.cs\n\n\n\tpublic static void ConsultarDados(){\n            //criando instancia do contexto\n            using var db = new Data.ApplicationContext();\n\n            //consulta utilizando sintaxe\n            // var consultaPorSintaxe = (from c in db.Clientes  where c.Id \u003e 0 select c).ToList();\n\n            //consulta utilizando metodo linqs\n            var consultaPorSintaxe = db.Clientes.Where(p =\u003e p.Id \u003e 0).ToList();\n        }   \n\nchamar no metodo ConsultarDados no metodo main\n\n\t   static void Main(string[] args)\n\t\t{\n\t\t    InserirDadosEmMassa();\n\t\t    ConsultarDados();\n\t\t}\n\n\nEntidade Program.cs\n\n\tusing EFCore.Domain;\n\tusing EFCore.Obejct.EFCore.ValuesObject;\n\tusing System;\n\tusing System.Linq;\n\n\tnamespace EFCore\n\t{\n\t    class Program\n\t    {\n\t\tstatic void Main(string[] args)\n\t\t{\n\t\t    InserirDadosEmMassa();\n\t\t    ConsultarDados();\n\t\t}\n\n\t\tpublic static void ConsultarDados()\n\t\t{\n\t\t    //criando instancia do contexto\n\t\t    using var db = new Data.ApplicationContext();\n\n\t\t    //consulta utilizando Linq\n\t\t    var consultaPorSintaxe = (from c in db.Clientes  where c.Id \u003e 0 select c).ToList();\n\t\t    foreach(var Clientes in consultaPorSintaxe)\n\t\t    {\n\t\t\tdb.Clientes.Find(Clientes.Id);\n\t\t    }\n\n\t\t    //consulta utilizando metodo query\n\t\t    //var consultaPorSintaxe = db.Clientes.Where(p =\u003e p.Id \u003e 0).ToList();\n\t\t}   \n\n\t\tpublic static void InserirDadosEmMassa()\n\t\t{\n\t\t    var produto = new Produto\n\t\t    {\n\t\t\tDescricao = \"Produto Teste\",\n\t\t\tCodigoBarras = \"123456789\",\n\t\t\tTipoProduto = TipoProduto.MercadoriaParaRevenda,\n\t\t\tAtivo = true\n\n\t\t    };\n\n\t\t    var cliente = new Cliente\n\t\t    {\n\t\t\tNome = \"Alfredo Gomes\",\n\t\t\tCEP = \"31990055\",\n\t\t\tCidade = \"Belo Horizonte\",\n\t\t\tEstado = \"MG\",\n\t\t\tTelefone = \"31995358198\"\n\t\t    };\n\n\t\t    //criando instancia do contexto\n\t\t    using var db = new Data.ApplicationContext();\n\n\t\t    //db.AddRange(produto, cliente); \n\n\t\t    var registros = db.SaveChanges();\n\t\t    Console.WriteLine($\"Total Registro(s): {registros}\");\n\n\t\t}       \n\n\n\t\tprivate static void InserirDados()\n\t\t{\n\t\t    var produto = new Produto\n\t\t    {\n\t\t\tDescricao = \"Produto Teste\",\n\t\t\tCodigoBarras = \"123456789\",\n\t\t\tTipoProduto = TipoProduto.MercadoriaParaRevenda,\n\t\t\tAtivo = true\n\n\t\t    };\n\n\t\t    //criando instancia do contexto\n\t\t    using var db = new Data.ApplicationContext();\n\t\t    //db.Produtos.Add(produto);\n\t\t    db.Set\u003cProduto\u003e().Add(produto);\n\t\t    //db.Entity(produto).State = EntityState.Added;\n\t\t    //db.Add(produto);\n\n\t\t    var registro = db.SaveChanges();\n\n\t\t    Console.WriteLine($\"Total registro\");\n\t\t}\n\t    }\n\t}\n\t\nterminal \n\n\tdotnet run\n\nconsulta com carregamento adiantado\n\n        public static void CadastrarPedido()\n        {\n            //criando instancia do contexto\n            using var db = new Data.ApplicationContext();\n\n            //consulta \n            var Cliente = db.Clientes.FirstOrDefault();\n            var Produto = db.Produtos.FirstOrDefault();\n\n            //criando um pedido\n            var pedido = new Pedido\n            {\n                //preechendo a propriedade do pedido\n                ClienteId = clienteid,\n                IniciadoEm = DateTime.Now,\n                FinalizadoEM = DateTime.Now,\n                Observacao = \"Pedido Test\",\n                Status = Obejct.StatusPedido.Analise,\n                TipoFrete = TipoFrete.SemFrete,               \n            };\n\n        }\n\nchamar no metodo CadastrarPedido no metodo main\n\n    static void Main(string[] args)\n        {\n            InserirDadosEmMassa();\n            ConsultarDados();\n            CadastrarPedido();\n        }\n\nmetodo de consulta carregamento adiantado\n\n        private static void ConsultarPedidoCarregamentoAdiantado() \n        {\n            //criando instancia do contexto\n            using var db = new Data.ApplicationContext();\n\n            //chamando o metodo to list\n            var pedidos = db.Pedidos.Include(p=\u003ep.Intes).ToList();\n\n            //retornado todo registro em memoria\n            Console.WriteLine(pedidos.Count);\n        }\t\n\n\natualizado regristro no banco de dados\n\n        public static void AtualizarDados()\n        {\n            //criando instancia do contexto\n            using var db = new Data.ApplicationContext();\n\n            //consultando informacoes\n            var Cliente = db.Clientes.Find(1);\n            //alterar o nome do cliente\n\n            Cliente.Nome = \"Cliente alterado Passo 1\";\n            //instacia do contexto\n            db.Clientes.Update(Cliente);\n            db.SaveChanges();\n\n        }\n\nchamar no metodo AtualizarDados no metodo main\n\n    static void Main(string[] args)\n        {\n            InserirDadosEmMassa();\n            ConsultarDados();\n            CadastrarPedido();\n        }\n\nentidade programa.cs\n\n\tusing EFCore.Domain;\n\tusing EFCore.Obejct.EFCore.ValuesObject;\n\tusing Microsoft.EntityFrameworkCore;\n\tusing System;\n\tusing System.Linq;\n\n\tnamespace EFCore\n\t{\n\t    class Program\n\t    {\n\t\tprivate static int clienteid;\n\n\t\t//metodos de execucoes dos metodos criados\n\t\tstatic void Main(string[] args)\n\t\t{\n\t\t    InserirDadosEmMassa();\n\t\t    ConsultarDados();\n\t\t    CadastrarPedido();\n\t\t    ExcluirDados();\n\t\t}\n\n\n\t\t//metodo p/ consultar registro\n\t\tpublic static void ConsultarDados()\n\t\t{\n\t\t    //criando instancia do contexto\n\t\t    using var db = new Data.ApplicationContext();\n\n\t\t    //consulta utilizando Linq\n\t\t    var consultaPorSintaxe = (from c in db.Clientes where c.Id \u003e 0 select c).ToList();\n\t\t    foreach (var Clientes in consultaPorSintaxe)\n\t\t    {\n\t\t\tdb.Clientes.Find(Clientes.Id);\n\t\t    }\n\n\t\t    //consulta utilizando metodo query\n\t\t   //var consultaPorSintaxe = db.Clientes.Where(p =\u003e p.Id \u003e 0).ToList();\n\t\t}\n\n\n\t\t//metodo p/ inserir registro\n\t\tprivate static void InserirDados()\n\t\t{\n\t\t    var produto = new Produto\n\t\t    {\n\t\t\tDescricao = \"Produto Teste\",\n\t\t\tCodigoBarras = \"123456789\",\n\t\t\tTipoProduto = TipoProduto.MercadoriaParaRevenda,\n\t\t\tAtivo = true\n\n\t\t    };\n\n\t\t    //criando instancia do contexto\n\t\t    using var db = new Data.ApplicationContext();\n\t\t    //db.Produtos.Add(produto);\n\t\t    db.Set\u003cProduto\u003e().Add(produto);\n\t\t    //db.Entity(produto).State = EntityState.Added;\n\t\t    //db.Add(produto);\n\n\t\t    var registro = db.SaveChanges();\n\n\t\t    Console.WriteLine($\"Total registro\");\n\t\t}\n\n\n\t\t//metodo p/ inserir registro em massa\n\t\tpublic static void InserirDadosEmMassa()\n\t\t{\n\t\t    var produto = new Produto\n\t\t    {\n\t\t\tDescricao = \"Produto Teste\",\n\t\t\tCodigoBarras = \"123456789\",\n\t\t\tTipoProduto = TipoProduto.MercadoriaParaRevenda,\n\t\t\tAtivo = true\n\n\t\t    };\n\n\t\t    var cliente = new Cliente\n\t\t    {\n\t\t\tNome = \"Alfredo Gomes\",\n\t\t\tCEP = \"31990055\",\n\t\t\tCidade = \"Belo Horizonte\",\n\t\t\tEstado = \"MG\",\n\t\t\tTelefone = \"31995358198\"\n\t\t    };\n\n\t\t    //criando instancia do contexto\n\t\t    using var db = new Data.ApplicationContext();\n\n\t\t    //db.AddRange(produto, cliente); \n\t\t    var registros = db.SaveChanges();\n\t\t    Console.WriteLine($\"Total Registro(s): {registros}\");\n\t\t}\n\n\n\t\t//metodo p/ consultar registro adiatado\n\t\tprivate static void ConsultarPedidoCarregamentoAdiantado()\n\t\t{\n\t\t    //criando instancia do contexto\n\t\t    using var db = new Data.ApplicationContext();\n\n\t\t    //chamando o metodo to list\n\t\t    var pedidos = db.Pedidos.Include(\"Intes\").ToList();\n\n\t\t    //retornado todo registro em memoria\n\t\t    Console.WriteLine(pedidos.Count);\n\t\t}\n\n\n\t\t//metodo p/ cadastrar registro \n\t\tpublic static void CadastrarPedido()\n\t\t{\n\t\t    //criando instancia do contexto\n\t\t    using var db = new Data.ApplicationContext();\n\n\t\t    //consulta \n\t\t    var Cliente = db.Clientes.FirstOrDefault();\n\t\t    var Produto = db.Produtos.FirstOrDefault();\n\n\t\t    //criando um pedido\n\t\t    var pedido = new Pedido\n\t\t    {\n\t\t\t//preechendo a propriedade do pedido\n\t\t\tClienteId = clienteid,\n\t\t\tIniciadoEm = DateTime.Now,\n\t\t\tFinalizadoEM = DateTime.Now,\n\t\t\tObservacao = \"Pedido Test\",\n\t\t\tStatus = Obejct.StatusPedido.Analise,\n\t\t\tTipoFrete = TipoFrete.SemFrete,\n\t\t    };\n\n\t\t}\n\n\n\t\t//metodo p/ atualizar registro\n\t\tpublic static void AtualizarDados()\n\t\t{\n\t\t    //criando instancia do contexto\n\t\t    using var db = new Data.ApplicationContext();\n\n\t\t    //consultando informacoes\n\t\t    var Cliente = db.Clientes.Find(1);\n\t\t    //alterar o nome do cliente\n\n\t\t    Cliente.Nome = \"Cliente alterado Passo 1\";\n\t\t    //instacia do contexto\n\t\t    db.Clientes.Update(Cliente);\n\t\t  //db.Entry(cliente).State = EntityState.Modified;\n\n\t\t    db.SaveChanges();\n\n\t\t}\n\n\t\t//metodo p/ atualizar registro\n\t\tpublic static void ExcluirDados()\n\t\t{\n\t\t    //criando instancia do contexto\n\t\t    using var db = new Data.ApplicationContext();\n\n\t\t    //consultando informacoes\n\t\t    var Cliente = db.Clientes.Find(2);\n\t\t    //alterar o nome do cliente\n\n\t\t    //Removendo instacia do contexto\n\t\t    db.Clientes.Remove(Cliente);\n\n\t\t    db.SaveChanges();\n\t\t}\n\n\t    }\n\t}\n\t\n\t\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falfredo1995%2Fentity-framewok","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falfredo1995%2Fentity-framewok","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falfredo1995%2Fentity-framewok/lists"}