https://github.com/alfredo1995/entity-framewok
Ordering system with Context classes, mapping using Fluent API and DataAnnotations (Entity Framework Core 6.0)
https://github.com/alfredo1995/entity-framewok
csharp dotnet entity-framework-core
Last synced: 5 months ago
JSON representation
Ordering system with Context classes, mapping using Fluent API and DataAnnotations (Entity Framework Core 6.0)
- Host: GitHub
- URL: https://github.com/alfredo1995/entity-framewok
- Owner: alfredo1995
- Created: 2021-08-22T22:00:47.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2025-01-14T16:50:25.000Z (over 1 year ago)
- Last Synced: 2025-04-12T16:13:35.244Z (about 1 year ago)
- Topics: csharp, dotnet, entity-framework-core
- Language: C#
- Homepage:
- Size: 5.79 MB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Creating an Ordering API in the Console
Create one Brank Solution > dentro da solution criar um novo projeto CONSOLE
Installing SQL Server Package
dotnet add Curso\CursoEFCore.csproj package Microsoft.EntityFrameworkCore.SqlServer --version 3.1.5
installing SQL Server Package via Pack Nuget
Project dependency > right button > Manage Nuget Package
create the DOMAIN and ValuesObjects folder > within the CursoEFCore Console project
In the folder CursoEFCore > ValuesObjects > Create Enum classes with properties
CursoEFCore > ValuesObjects > StatusPedidos.cs
namespace EFCore.Obejct
{
public enum StatusPedido
{
Analise,
Fizalizado,
Entregue,
}
}
CursoEFCore > ValuesObjects > TipoFrete.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace EFCore.Obejct
{
namespace CursoEFCore.ValuesObject
{
public enum TipoFrete
{
CIF,
FOB,
SemFrete,
}
}
}
CursoEFCore > ValuesObjects > TipoProduto.cs
namespace EFCore.Obejct
{
namespace CursoEFCore.ValuesObject
{
public enum TipoProduto
{
MecadoriaParaRevenda,
Embalagem,
Serviço,
}
}
}
CursoEFCore > Domain> Cliente.cs
namespace CursoEFCore.Domain
{
public class Cliente
{
public int Id { get; set; }
public string CodigoBarras { get; set; }
public string Descricao { get; set; }
public decimal Valor { get; set; }
public TipoProduto TipoProduto { get; set; }
public bool Ativo { get; set; }
}
}
CursoEFCore > Domain> Produto.cs
namespace CursoEFCore.Domain
{
public class Produto
{
public int Id { get; set; }
public string Nome { get; set; }
public string Telefone { get; set; }
public string CEP { get; set; }
public string Estado { get; set; }
public string cidade { get; set; }
}
}
CursoEFCore > Domain> Pedido.cs
namespace CursoEFCore.Domain
{
public class Pedido
{
public int Id { get; set; }
public int ClienteId { get; set; }
public Cliente Cliente { get; set; }
public DateTime IniciadoEm { get; set; }
public DateTime FizalizadoEm { get; set; }
public TipoFrete TipoFrete { get; set; }
public StatusPedido Status { get; set; }
public string Observacao { get; set; }
public ICollection Intes { get; set; }
}
}
CursoEFCore > Domain> PedidoItem.cs
namespace CursoEFCore.Domain
{
public class PedidoItem
{
public int Id { get; set; }
public int PedidoId { get; set; }
public Pedido Pedido { get; set; }
public Produto Produto { get; set; }
public int Quatidade { get; set; }
public decimal Desconto { get; set; }
}
}
Cria class de contexto DbContext
criar dentro de CursoEFCore > pasta DATA
CursoEFCore > Data> ApplicationContext.cs : herdando de DbContext
namespace CursoEFCore.Data
{
class ApplicationContext : DbContext
{
public DbSet Pedidos { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Data source=(localdb)\\mssqllocaldb;Initial Catalag=CursoEFCore;Integrated Secury=true");
}
// protected override void OnModelCreating(MoldelBuilder modelBuilder) { modelBuilder.Entity();}
}
}
CursoEFCore > Data> ApplicationContext.cs sobreescrevendo os metodos
namespace CursoEFCore.Data
{
class ApplicationContext : DbContext
{
public DbSet Pedidos { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Data source=(localdb)\\mssqllocaldb;Initial Catalag=CursoEFCore;Integrated Secury=true");
}
}
}
Mapeamento atraves Fluent API
using CursoEFCore.Domain;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Text;
namespace CursoEFCore.Data
{
class ApplicationContext : DbContext
{
public DbSet Pedidos { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Data source=(localdb)\\mssqllocaldb;Initial Catalog=EFCore;Integrated Security=true");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity(p =>
{
p.ToTable("Cliente");
p.HasKey(p => p.Id);
p.Property(p => p.Nome).HasColumnType("VARCHAR(80)").IsRequired();
p.Property(p => p.Telefone).HasColumnType("CHAR(11)").IsRequired();
p.Property(p => p.CEP).HasColumnType("CHAR(8)").IsRequired();
p.Property(p => p.Estado).HasColumnType("CHAR(8)").IsRequired();
p.Property(p => p.Cidade).HasMaxLength(60).IsRequired();
//p.HasIndex(i => i.Telefone).HasName("idx_cliente_telefone");
});
modelBuilder.Entity(p =>
{
p.ToTable("Produto");
p.HasKey(p => p.Id);
p.Property(p => p.CodigoBarras).HasColumnType("VARCHAR(80)").IsRequired();
p.Property(p => p.Descricao).HasColumnType("CHAR(11)").IsRequired();
p.Property(p => p.Valor).IsRequired();
});
modelBuilder.Entity(p =>
{
p.ToTable("Pedido ");
p.HasKey(p => p.Id);
p.Property(p => p.IniciadoEm).HasDefaultValueSql("GETDATA(80)").IsRequired();
p.Property(p => p.Status).HasConversion();
p.Property(p => p.TipoFrete).HasConversion();
p.Property(p => p.Observacao).HasColumnType("CHAR(502)").IsRequired();
// p.HasMany(p => p.Intens;
// .WithOne(p => p.Pedido)
//.OnDelete(DeleteBehavior.Cascade);
//});
modelBuilder.Entity(p =>
{
p.ToTable("PedidoIntem");
p.HasKey(p => p.Id);
p.Property(p => p.Quantidade).HasDefaultValue(1).IsRequired();
p.Property(p => p.Valor).IsRequired();
p.Property(p => p.Desconto).IsRequired();
});
}); }}}
Mapeamendo modelo de dados em arquivos separados
CursoEFCore > Data > criar a pasta Configurations > criar o arquivo > ClientConfiguration.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace CursoEFCore.Data.Configuration
{
public class ClienteConfiguration
{
}
}
implementar uma class IEntityType informando a entidade ClientConfiguration.cs
using CursoEFCore.Domain;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Text;
namespace CursoEFCore.Data.Configuration
{
public class ClienteConfiguration : IEntityTypeConfiguration
{
}
}
implementando a interface
using CursoEFCore.Domain;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.Collections.Generic;
using System.Text;
namespace CursoEFCore.Data.Configuration
{
public class ClienteConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
throw new NotImplementedException();
}
}
}
reaproventado a propriedade da entidade cliente
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.Collections.Generic;
using System.Text;
namespace CursoEFCore.Data.Configuration
{
public class ClienteConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.ToTable("Cliente");
builder.HasKey(p => p.Id);
builder.Property(p => p.Nome).HasColumnType("VARCHAR(80)").IsRequired();
builder.Property(p => p.Telefone).HasColumnType("CHAR(11)").IsRequired();
builder.Property(p => p.CEP).HasColumnType("CHAR(8)").IsRequired();
builder.Property(p => p.Estado).HasColumnType("CHAR(8)").IsRequired();
builder.Property(p => p.Cidade).HasMaxLength(60).IsRequired();
//builder.HasIndex(i => i.Telefone).HasName("idx_cliente_telefone");
}
}
reaproventado a propriedade da entidade Produto
using CursoEFCore.Domain;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.Collections.Generic;
using System.Text;
namespace CursoEFCore.Data.Configuration
{
public class ProdutoConfiguration : IEntityTypeConfiguration
{
public void Configure(EntityTypeBuilder builder)
{
builder.ToTable("Produto");
builder.HasKey(p => p.Id);
builder.Property(p => p.CodigoBarras).HasColumnType("VARCHAR(80)").IsRequired();
builder.Property(p => p.Descricao).HasColumnType("CHAR(11)").IsRequired();
builder.Property(p => p.Valor).IsRequired();
//builder.HasIndex(i => i.Telefone).HasName("idx_cliente_telefone");
}
}
}
ApplicationContext
using CursoEFCore.Domain;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
namespace CursoEFCore.Data
{
class ApplicationContext : DbContext
{
public DbSet Pedidos { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Data source=(localdb)\\mssqllocaldb;Initial Catalog=EFCore;Integrated Securuty=true");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity(p =>
{
p.ToTable("Cliente");
p.HasKey(p => p.Id);
p.Property(p => p.Nome).HasColumnType("VARCHAR(80)").IsRequired();
p.Property(p => p.Telefone).HasColumnType("CHAR(11)").IsRequired();
p.Property(p => p.CEP).HasColumnType("CHAR(8)").IsRequired();
p.Property(p => p.Estado).HasColumnType("CHAR(8)").IsRequired();
p.Property(p => p.Cidade).HasMaxLength(60).IsRequired();
//p.HasIndex(i => i.Telefone).HasName("idx_cliente_telefone");
});
modelBuilder.Entity(p =>
{
p.ToTable("Produto");
p.HasKey(p => p.Id);
p.Property(p => p.CodigoBarras).HasColumnType("VARCHAR(80)").IsRequired();
p.Property(p => p.Descricao).HasColumnType("CHAR(11)").IsRequired();
p.Property(p => p.Valor).IsRequired();
});
modelBuilder.Entity(p =>
{
p.ToTable("Pedido ");
p.HasKey(p => p.Id);
p.Property(p => p.IniciadoEm).HasDefaultValueSql("GetDate()").IsRequired();
p.Property(p => p.Status).HasConversion();
p.Property(p => p.TipoFrete).HasConversion();
p.Property(p => p.Observacao).HasColumnType("CHAR(502)").IsRequired();
modelBuilder.Entity(p =>
{
p.ToTable("PedidoIntem");
p.HasKey(p => p.Id);
p.Property(p => p.Quantidade).HasDefaultValue(1).IsRequired();
p.Property(p => p.Valor).IsRequired();
p.Property(p => p.Desconto).IsRequired();
});
});
}
}
}
apos criar as class representando a entidade ApplicationContext pode apagar as propriedades
using CursoEFCore.Domain;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
namespace CursoEFCore.Data
{
class ApplicationContext : DbContext
{
public DbSet Pedidos { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Data source=(localdb)\\mssqllocaldb;Initial Catalog=EFCore;Integrated Security=true");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}
}
}
aplication configuration
using CursoEFCore.Data.Configuration;
using CursoEFCore.Domain;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
namespace CursoEFCore.Data
{
class ApplicationContext : DbContext
{
public DbSet Pedidos { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Data source=(localdb)\\mssqllocaldb;Initial Catalog=EFCore;Integrated Security=true");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfigurationsFromAssembly(typeof(ApplicationContext).Assembly);
modelBuilder.ApplyConfiguration(new ClienteConfiguration());
modelBuilder.ApplyConfiguration(new PedidoConfiguration());
modelBuilder.ApplyConfiguration(new PedidoItemConfiguration());
modelBuilder.ApplyConfiguration(new ProdutoConfiguration());
}
}
}
Utilizando DataAnnotations Domain > Cliente.cs > adicior atributos key, required, table e Column ()
using EFCore.Obejct.CursoEFCore.ValuesObject;
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace CursoEFCore.Domain
{
[Table("Clientes")]
public class Cliente
{
[key]
public int Id { get; set; }
[Required]
public string CodigoBarras { get; set; }
public string Descricao { get; set; }
[Coloumn()]
public decimal Valor { get; set; }
public TipoProduto TipoProduto { get; set; }
public bool Ativo { get; set; }
public string Nome { get; internal set; }
public string Telefone { get; internal set; }
public string CEP { get; internal set; }
public string Cidade { get; internal set; }
public string Estado { get; internal set; }
}
}
Habilitando Migrações
intalar o pacote Microsoft.EntityFrameworkCore.Design e Microsoft.EntityFrameworkCore.Tools
dotnet tool install --global dotnet-ef --version 3.1.5
Comando no Package Nuget Console
get-help entityframework
dotnet ef migrations add teste
dotnet ef migrations add PrimeiraMigracao -p .\EFCore\EFCore.csproj
Add-Migration NovaMigration
Update-Database
gerando script SQL passando .\pasta\solutionProjet
terminal : dotnet ef migrations Script -o .\Script\PrimeiraMigracao.SQL
dotnet ef migrations script -p .\EFCore\EFCore.csproj -o .\EFCore\PrimeiraMigracao.SQL
Aplicando a migração no Banco de Dados
dotnet ef database update -p .\EFCore\EFCore.csproj -v
dotnet ef migrations add AdicionarEmail -p .\EFCore\EFCore.csproj -v
Inserido Registro com Entity Framework Core / ApplicationContext
public DbSet Clientes { get; set; }
public DbSet Pedidos { get; set; }
public DbSet Produtos { get; set; }
Criar metodo e instancia na entidade Programa.cs
public static void InserirDados(){
var produto = new Produto{
Descricao = "Produto Teste",
CodigoBarras = "123456789",
Valor= 10,
TipoProduto = TipoProduto.MercadoriaParaRevenda,
Ativo = true };
Criar metodo e instancia na entidade Programa.cs
using CursoEFCore.Domain;
using EFCore.Obejct.CursoEFCore.ValuesObject;
using System;
namespace EFCore
{
class Program
{
static void Main(string[] args)
{
InserirDados();
}
private static void InserirDados()
{
var produto = new Produto
{
Descricao = "Produto Teste",
CodigoBarras = "123456789",
Valor = 10,
TipoProduto = TipoProduto.MercadoriaParaRevenda,
Ativo = true
};
//preparar o objeto para instancia
using var db = new Data.ApplicationContext();
//4 formas de adicionar instancia do objeto
db.Produtos.Add(produto);
db.Set().Add(produto);
db.Entity(produto).State = EntityState.Added;
db.Add(produto);
//salvando o rastreamento que EFCore alocou em memoria
var registro = db.SaveChanges();
Console.WriteLine($"Total registro");
}
}
}
Inserindo os registro usando terminal
dotnet run
adicionar pacote de log
todas as instruçoes geradas pelo efcore sejam escritas no console da aplicação
terminal console gerenciador de pacotes
dotnet add package Microsoft.Extensions.Logging.Console --Version 3.1.5
AplicationContext informar a instancia do log criado
class ApplicationContext : DbContext
{
private static readonly ILoggerFactory _logger = LoggerFactory.Create(p=>p.AddConsole());
AplicationContext metodo OnConfiguring informando o log a ser executado
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder
.UseLoggerFactory(_logger)
.EnableSensitiveDataLogging()
Entidade AplicationContext
using EFCore.Data.Configuration;
using EFCore.Domain;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using System.Collections.Generic;
namespace EFCore.Data
{
class ApplicationContext : DbContext
{
private static readonly ILoggerFactory _logger = LoggerFactory.Create(p=>p.AddConsole());
public DbSet Pedidos { get; set; }
public DbSet Produtos { get; set; }
public DbSet Clientes { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder
.UseLoggerFactory(_logger)
.EnableSensitiveDataLogging()
.UseSqlServer("Data source=(localdb)\\mssqllocaldb;Initial Catalog=EFCore; Integrated Security=true");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfigurationsFromAssembly(typeof(ApplicationContext).Assembly);
modelBuilder.ApplyConfiguration(new ClienteConfiguration());
modelBuilder.ApplyConfiguration(new PedidoConfiguration());
modelBuilder.ApplyConfiguration(new PedidoItemConfiguration());
modelBuilder.ApplyConfiguration(new ProdutoConfiguration());
}
}
}
inserindo registro em massa ao criar novo metodo na entidade Programa.cs
public static void InserirDadosEmMassa()
{
var produto = new Produto
{
Descricao = "Produto Teste",
CodigoBarras = "123456789",
TipoProduto = TipoProduto.MercadoriaParaRevenda,
Ativo = true
};
var cliente = new Cliente
{
Nome = "Alfredo Gomes",
CEP = "31990055",
Cidade = "Belo Horizonte",
Estado = "MG",
Telefone = "31995358198"
};
criando instancia do contexto Programa.cs
using var db = new Data.ApplicationContext();
db.AddRange(produto, cliente);
var registros = db.SaveChanges();
Console.WriteLine($"Total Registro(s): {registros}");
}
alterar o recebimento no static void main de InserirDados para InserirDadosEmMassa
static void Main(string[] args)
{
InserirDadosEmMassa();
}
Entidade Programa.cs
using EFCore.Domain;
using EFCore.Obejct.EFCore.ValuesObject;
using System;
namespace EFCore
{
class Program
{
static void Main(string[] args)
{
InserirDadosEmMassa();
}
public static void InserirDadosEmMassa()
{
var produto = new Produto
{
Descricao = "Produto Teste",
CodigoBarras = "123456789",
TipoProduto = TipoProduto.MercadoriaParaRevenda,
Ativo = true
};
var cliente = new Cliente
{
Nome = "Alfredo Gomes",
CEP = "31990055",
Cidade = "Belo Horizonte",
Estado = "MG",
Telefone = "31995358198"
};
//criando instancia do contexto
using var db = new Data.ApplicationContext();
db.AddRange(produto, cliente);
var registros = db.SaveChanges();
Console.WriteLine($"Total Registro(s): {registros}");
}
private static void InserirDados()
{
var produto = new Produto
{
Descricao = "Produto Teste",
CodigoBarras = "123456789",
TipoProduto = TipoProduto.MercadoriaParaRevenda,
Ativo = true
};
//criando instancia do contexto
using var db = new Data.ApplicationContext();
//db.Produtos.Add(produto);
db.Set().Add(produto);
//db.Entity(produto).State = EntityState.Added;
//db.Add(produto);
var registro = db.SaveChanges();
Console.WriteLine($"Total registro");
}
}
}
rodar as alterações no terminal
dotnet run
consultando registro da base dados program.cs
public static void ConsultarDados(){
//criando instancia do contexto
using var db = new Data.ApplicationContext();
//consulta utilizando sintaxe
// var consultaPorSintaxe = (from c in db.Clientes where c.Id > 0 select c).ToList();
//consulta utilizando metodo linqs
var consultaPorSintaxe = db.Clientes.Where(p => p.Id > 0).ToList();
}
chamar no metodo ConsultarDados no metodo main
static void Main(string[] args)
{
InserirDadosEmMassa();
ConsultarDados();
}
Entidade Program.cs
using EFCore.Domain;
using EFCore.Obejct.EFCore.ValuesObject;
using System;
using System.Linq;
namespace EFCore
{
class Program
{
static void Main(string[] args)
{
InserirDadosEmMassa();
ConsultarDados();
}
public static void ConsultarDados()
{
//criando instancia do contexto
using var db = new Data.ApplicationContext();
//consulta utilizando Linq
var consultaPorSintaxe = (from c in db.Clientes where c.Id > 0 select c).ToList();
foreach(var Clientes in consultaPorSintaxe)
{
db.Clientes.Find(Clientes.Id);
}
//consulta utilizando metodo query
//var consultaPorSintaxe = db.Clientes.Where(p => p.Id > 0).ToList();
}
public static void InserirDadosEmMassa()
{
var produto = new Produto
{
Descricao = "Produto Teste",
CodigoBarras = "123456789",
TipoProduto = TipoProduto.MercadoriaParaRevenda,
Ativo = true
};
var cliente = new Cliente
{
Nome = "Alfredo Gomes",
CEP = "31990055",
Cidade = "Belo Horizonte",
Estado = "MG",
Telefone = "31995358198"
};
//criando instancia do contexto
using var db = new Data.ApplicationContext();
//db.AddRange(produto, cliente);
var registros = db.SaveChanges();
Console.WriteLine($"Total Registro(s): {registros}");
}
private static void InserirDados()
{
var produto = new Produto
{
Descricao = "Produto Teste",
CodigoBarras = "123456789",
TipoProduto = TipoProduto.MercadoriaParaRevenda,
Ativo = true
};
//criando instancia do contexto
using var db = new Data.ApplicationContext();
//db.Produtos.Add(produto);
db.Set().Add(produto);
//db.Entity(produto).State = EntityState.Added;
//db.Add(produto);
var registro = db.SaveChanges();
Console.WriteLine($"Total registro");
}
}
}
terminal
dotnet run
consulta com carregamento adiantado
public static void CadastrarPedido()
{
//criando instancia do contexto
using var db = new Data.ApplicationContext();
//consulta
var Cliente = db.Clientes.FirstOrDefault();
var Produto = db.Produtos.FirstOrDefault();
//criando um pedido
var pedido = new Pedido
{
//preechendo a propriedade do pedido
ClienteId = clienteid,
IniciadoEm = DateTime.Now,
FinalizadoEM = DateTime.Now,
Observacao = "Pedido Test",
Status = Obejct.StatusPedido.Analise,
TipoFrete = TipoFrete.SemFrete,
};
}
chamar no metodo CadastrarPedido no metodo main
static void Main(string[] args)
{
InserirDadosEmMassa();
ConsultarDados();
CadastrarPedido();
}
metodo de consulta carregamento adiantado
private static void ConsultarPedidoCarregamentoAdiantado()
{
//criando instancia do contexto
using var db = new Data.ApplicationContext();
//chamando o metodo to list
var pedidos = db.Pedidos.Include(p=>p.Intes).ToList();
//retornado todo registro em memoria
Console.WriteLine(pedidos.Count);
}
atualizado regristro no banco de dados
public static void AtualizarDados()
{
//criando instancia do contexto
using var db = new Data.ApplicationContext();
//consultando informacoes
var Cliente = db.Clientes.Find(1);
//alterar o nome do cliente
Cliente.Nome = "Cliente alterado Passo 1";
//instacia do contexto
db.Clientes.Update(Cliente);
db.SaveChanges();
}
chamar no metodo AtualizarDados no metodo main
static void Main(string[] args)
{
InserirDadosEmMassa();
ConsultarDados();
CadastrarPedido();
}
entidade programa.cs
using EFCore.Domain;
using EFCore.Obejct.EFCore.ValuesObject;
using Microsoft.EntityFrameworkCore;
using System;
using System.Linq;
namespace EFCore
{
class Program
{
private static int clienteid;
//metodos de execucoes dos metodos criados
static void Main(string[] args)
{
InserirDadosEmMassa();
ConsultarDados();
CadastrarPedido();
ExcluirDados();
}
//metodo p/ consultar registro
public static void ConsultarDados()
{
//criando instancia do contexto
using var db = new Data.ApplicationContext();
//consulta utilizando Linq
var consultaPorSintaxe = (from c in db.Clientes where c.Id > 0 select c).ToList();
foreach (var Clientes in consultaPorSintaxe)
{
db.Clientes.Find(Clientes.Id);
}
//consulta utilizando metodo query
//var consultaPorSintaxe = db.Clientes.Where(p => p.Id > 0).ToList();
}
//metodo p/ inserir registro
private static void InserirDados()
{
var produto = new Produto
{
Descricao = "Produto Teste",
CodigoBarras = "123456789",
TipoProduto = TipoProduto.MercadoriaParaRevenda,
Ativo = true
};
//criando instancia do contexto
using var db = new Data.ApplicationContext();
//db.Produtos.Add(produto);
db.Set().Add(produto);
//db.Entity(produto).State = EntityState.Added;
//db.Add(produto);
var registro = db.SaveChanges();
Console.WriteLine($"Total registro");
}
//metodo p/ inserir registro em massa
public static void InserirDadosEmMassa()
{
var produto = new Produto
{
Descricao = "Produto Teste",
CodigoBarras = "123456789",
TipoProduto = TipoProduto.MercadoriaParaRevenda,
Ativo = true
};
var cliente = new Cliente
{
Nome = "Alfredo Gomes",
CEP = "31990055",
Cidade = "Belo Horizonte",
Estado = "MG",
Telefone = "31995358198"
};
//criando instancia do contexto
using var db = new Data.ApplicationContext();
//db.AddRange(produto, cliente);
var registros = db.SaveChanges();
Console.WriteLine($"Total Registro(s): {registros}");
}
//metodo p/ consultar registro adiatado
private static void ConsultarPedidoCarregamentoAdiantado()
{
//criando instancia do contexto
using var db = new Data.ApplicationContext();
//chamando o metodo to list
var pedidos = db.Pedidos.Include("Intes").ToList();
//retornado todo registro em memoria
Console.WriteLine(pedidos.Count);
}
//metodo p/ cadastrar registro
public static void CadastrarPedido()
{
//criando instancia do contexto
using var db = new Data.ApplicationContext();
//consulta
var Cliente = db.Clientes.FirstOrDefault();
var Produto = db.Produtos.FirstOrDefault();
//criando um pedido
var pedido = new Pedido
{
//preechendo a propriedade do pedido
ClienteId = clienteid,
IniciadoEm = DateTime.Now,
FinalizadoEM = DateTime.Now,
Observacao = "Pedido Test",
Status = Obejct.StatusPedido.Analise,
TipoFrete = TipoFrete.SemFrete,
};
}
//metodo p/ atualizar registro
public static void AtualizarDados()
{
//criando instancia do contexto
using var db = new Data.ApplicationContext();
//consultando informacoes
var Cliente = db.Clientes.Find(1);
//alterar o nome do cliente
Cliente.Nome = "Cliente alterado Passo 1";
//instacia do contexto
db.Clientes.Update(Cliente);
//db.Entry(cliente).State = EntityState.Modified;
db.SaveChanges();
}
//metodo p/ atualizar registro
public static void ExcluirDados()
{
//criando instancia do contexto
using var db = new Data.ApplicationContext();
//consultando informacoes
var Cliente = db.Clientes.Find(2);
//alterar o nome do cliente
//Removendo instacia do contexto
db.Clientes.Remove(Cliente);
db.SaveChanges();
}
}
}