Domine o Raw SQL no EF Core: Guia Completo e Prático
Domine o EF Core: Guia Prático para Acesso a Dados
O Entity Framework Core🌍 Projeto: API de E-Commerce com ASP.NET Core e SQL Server!Aprenda a construir uma API robusta para e-commerce com ASP.NET Core, EF Core, JWT e Swagger, validando suas habilidades em um projeto prático real. (EF Core
🌍 Projeto: API de E-Commerce com ASP.NET Core e SQL Server!Aprenda a construir uma API robusta para e-commerce com ASP.NET Core, EF Core, JWT e Swagger, validando suas habilidades em um projeto prático real.) é como aquela varinha mágica dos filmes de fantasia: você faz suas entidades em C# e, quase por encanto, seus dados acabam salvos no banco de dados! É um ORM (Object-Relational Mapping
📊 Raw SQL no EF Core: Quando o ORM Não Basta!Descubra como aplicar Raw SQL no EF Core para consultas avançadas e stored procedures, garantindo performance, segurança e mapeamento preciso dos dados.) que elimina a necessidade de escrever SQL na mão
📊 Raw SQL no EF Core: Quando o ORM Não Basta!Descubra como aplicar Raw SQL no EF Core para consultas avançadas e stored procedures, garantindo performance, segurança e mapeamento preciso dos dados. para grande parte das operações, economizando tempo e evitando muitos erros. Além disso, o EF Core deixa seu código mais “Clean”, facilitando a manutenção e a evolução do seu projeto.
Imagine poder manipular um banco de dados sem escrever SQL📝 SQL Básico: SELECT, INSERT, UPDATE e DELETE para Sobreviver!Aprenda os comandos cruciais de SQL para manipular dados em bancos relacionais com exemplos práticos, dicas e boas práticas para livrarias. manualmente! O EF Core faz exatamente isso: transforma tabelas em classes
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara., registros em objetos e queries em LINQ. É como ter um tradutor automático entre seu código C# e o banco de dados.
Neste artigo, vamos mergulhar no essencial sobre esse recurso📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos. incrível que é o EF Core, entendendo como ele funciona, como configurá-lo e até fazendo um pequeno CRUD em C#. Além disso, você vai aprender como o EF Core:
- Elimina 80% do código repetitivo de acesso a dados
- Permite evoluir o banco de dados sem perder informações
- Otimiza consultas
🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio. automaticamente
- Funciona até em projetos
🌐 LinkedIn para Devs .NET: Perfil que Atrai Recrutadores!Aprenda a otimizar seu perfil LinkedIn com dicas essenciais para devs .NET. Conquiste oportunidades e destaque suas habilidades! legados
📌 Índice🔗
- O que é um ORM
📊 Raw SQL no EF Core: Quando o ORM Não Basta!Descubra como aplicar Raw SQL no EF Core para consultas avançadas e stored procedures, garantindo performance, segurança e mapeamento preciso dos dados.?
- O que é e por que usar EF Core
🌍 Projeto: API de E-Commerce com ASP.NET Core e SQL Server!Aprenda a construir uma API robusta para e-commerce com ASP.NET Core, EF Core, JWT e Swagger, validando suas habilidades em um projeto prático real.?
- Configuração
🚀 Scale Out com Redis: Atenda Milhões de Conexões!Integre o Redis com SignalR no .NET e distribua mensagens entre servidores, alcançando escalabilidade e alta performance em tempo real. e Dependências
- Criando seu DbContext
- Entidades (Models
🎭 MVVM: Separe Regras de Negócio da Interface Graficamente!Descubra como o padrão MVVM separa a interface e a lógica de negócio, facilitando testes e manutenção, com exemplos e dicas práticas para seu projeto.) e Mapeamento
- Operações Básicas (CRUD
🌍 Projeto: API de E-Commerce com ASP.NET Core e SQL Server!Aprenda a construir uma API robusta para e-commerce com ASP.NET Core, EF Core, JWT e Swagger, validando suas habilidades em um projeto prático real.)
- LINQ: Consultas
🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio. Fortemente Tipadas
- Migrations: Versionando seu Banco
- Relacionamentos 1:N e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. N:N
- Performance
🔄 StringBuilder: Quando Concatenar Strings Vira um Pesadelo!Descubra como o StringBuilder otimiza a concatenação em C#, evitando desperdício de memória e melhorando a performance das aplicações. Veja exemplos práticos!: Evitando Armadilhas
- Raw SQL
📊 Raw SQL no EF Core: Quando o ORM Não Basta!Descubra como aplicar Raw SQL no EF Core para consultas avançadas e stored procedures, garantindo performance, segurança e mapeamento preciso dos dados.: Quando o ORM Não Basta
- Projeto
🤝 GitHub Básico: Versionamento para Iniciantes!Descubra como o GitHub facilita colaboração, versionamento e organização de código com este tutorial prático e essencial para desenvolvedores iniciantes. Prático: Sistema de Estoque
- Considerações Finais
O que é um ORM?🔗
ORM📊 Raw SQL no EF Core: Quando o ORM Não Basta!Descubra como aplicar Raw SQL no EF Core para consultas avançadas e stored procedures, garantindo performance, segurança e mapeamento preciso dos dados. (Mapeamento Objeto-Relacional
📊 Raw SQL no EF Core: Quando o ORM Não Basta!Descubra como aplicar Raw SQL no EF Core para consultas avançadas e stored procedures, garantindo performance, segurança e mapeamento preciso dos dados.) converte dados entre sistemas incompatíveis. Veja a diferença:
// SEM ORM (ADO.NET tradicional):
using (var connection = new SqlConnection(connectionString))
{
var command = new SqlCommand("SELECT * FROM Produtos WHERE Preco > @preco", connection);
command.Parameters.AddWithValue("@preco", 100);
// ... abre conexão, executa, transforma dados manualmente
}
// COM EF Core:
var produtosCaros = await _context.Produtos
.Where(p => p.Preco > 100)
.ToListAsync();
Vantagens:
- Redução
🔢 Operadores Aritméticos: Faça Cálculos como uma Calculadora Humana!Aprenda a dominar operadores aritméticos em C# com exemplos práticos, técnicas de cálculo e dicas para evitar erros e maximizar resultados. de 70-90% no código de acesso a dados
- IntelliSense para consultas
🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio.
- Segurança contra SQL injection
🚫 SQL Injection: Proteja suas Queries de Ataques Maliciosos!Aprenda a defender seu banco de dados utilizando técnicas como parameterized queries, ORM, validação e stored procedures contra SQL Injection. automática
O que é e por que usar EF Core?🔗
O EF Core é um ORM que faz a ponte entre o mundo orientado a objetos do C# e o mundo relacional do banco de dados (SQL Server🌍 Projeto: API de E-Commerce com ASP.NET Core e SQL Server!Aprenda a construir uma API robusta para e-commerce com ASP.NET Core, EF Core, JWT e Swagger, validando suas habilidades em um projeto prático real., MySQL, PostgreSQL etc.). Em vez de escrever queries SQL direto, você manipula coleções de objetos dentro do seu código - e o EF Core se encarrega de gerar as instruções SQL necessárias.
Por que isso é interessante?
- Diminui a quantidade
🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio. de SQL “hardcoded” no projeto.
- Favorece a consistência e a manutenção do código (você altera as classes
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara., não múltiplas instruções SQL).
- Facilita a implementação de testes, pois podemos simular ou trocar facilmente a fonte de dados.
Configuração e Dependências🔗
Para começar a usar o EF Core, você precisa adicionar📦 List<T>: Dinamismo além dos Arrays!Descubra como utilizar List<T> em C# de forma eficiente. Aprenda a criar, manipular e otimizar listas para diferentes cenários com exemplos práticos. o pacote Microsoft.EntityFrameworkCore e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. também o pacote específico do provedor de banco de dados que vai usar (por exemplo, Microsoft.EntityFrameworkCore.SqlServer). No arquivo
.csproj
ou via CLI do .NET:
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
Ou, se você estiver usando o Visual Studio, pode instalar via Gerenciador de Pacotes📦 Crie um Pacote NuGet: Compartilhe seu Código!Aprenda a empacotar, configurar e publicar pacotes NuGet em C# passo a passo, com dicas profissionais e práticas recomendadas para seu projeto. NuGet.
Em seguida, você precisa informar a connection string📝 Strings em C#: Manipule Textos como um Mestre dos Caracteres!Aprenda a dominar os segredos das strings em C# com técnicas de manipulação, concatenação, interpolação e boas práticas, impulsionando sua performance. do seu banco de dados. Geralmente, isso é feito nas configurações da sua aplicação (por exemplo, em
appsettings.json
se estiver no ASP.NET Core📝 Logging com Serilog: Registre Tudo como um Detetive de Bugs!Aprenda a usar Serilog em .NET para registrar logs estruturados, identificar erros e enriquecer informações, transformando seu código num enigma solucionável.
🌍 Projeto: API de E-Commerce com ASP.NET Core e SQL Server!Aprenda a construir uma API robusta para e-commerce com ASP.NET Core, EF Core, JWT e Swagger, validando suas habilidades em um projeto prático real.).
Criando seu DbContext🔗
O DbContext em EF Core é a classe que representa uma “ponte” entre as entidades (classes🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. C#) e as tabelas do banco. É aqui que configuramos detalhes, nome da connection string, entre outros.
Exemplo simplificado de DbContext:
using Microsoft.EntityFrameworkCore;
public class MeuAppContext : DbContext
{
// Geralmente passamos a connection string para o construtor.
public MeuAppContext(DbContextOptions<MeuAppContext> options)
: base(options)
{
}
// Propriedades que representam a "coleção" de entidades no BD
public DbSet<Produto> Produtos { get; set; }
}
Se você estiver em um projeto de Console ou WPF, basta configurar as opções no construtor. Em um projeto ASP.NET Core🌍 Projeto: API de E-Commerce com ASP.NET Core e SQL Server!Aprenda a construir uma API robusta para e-commerce com ASP.NET Core, EF Core, JWT e Swagger, validando suas habilidades em um projeto prático real., isso costuma ser feito no
Program.cs
ou Startup.cs
, chamando algo como:
services.AddDbContext<MeuAppContext>(options =>
options.UseSqlServer(configuration.GetConnectionString("MinhaConnection")));
Entidades (Models) e Mapeamento🔗
As entidades são suas classes do dia a dia, como “Produto”, “Cliente”, “Pedido” e por aí vai. Cada propriedade vai se tornar uma coluna do seu banco. O EF Core faz um mapeamento automático🌍 Projeto: API de E-Commerce com ASP.NET Core e SQL Server!Aprenda a construir uma API robusta para e-commerce com ASP.NET Core, EF Core, JWT e Swagger, validando suas habilidades em um projeto prático real. (chamado Convention) com base nos nomes das propriedades e tipos. Se precisar de algo mais avançado, você pode usar Data Annotations ou a Fluent API
🌍 Projeto: API de E-Commerce com ASP.NET Core e SQL Server!Aprenda a construir uma API robusta para e-commerce com ASP.NET Core, EF Core, JWT e Swagger, validando suas habilidades em um projeto prático real. no
OnModelCreating
do DbContext.
Exemplo de uma classe “Produto🔢 Operadores Aritméticos: Faça Cálculos como uma Calculadora Humana!Aprenda a dominar operadores aritméticos em C# com exemplos práticos, técnicas de cálculo e dicas para evitar erros e maximizar resultados.”:
public class Produto
{
public int Id { get; set; }
public string Nome { get; set; }
public decimal Preco { get; set; }
public bool EmEstoque { get; set; }
}
Por convenção, a propriedade⚡ Propriedades: Get e Set com Elegância (e sem Campos Privados Bagunçados)!Aprenda como utilizar propriedades em C# para encapsular dados, validar informações e manter um código organizado, seguro e de fácil manutenção. chamada “Id” (ou “<NomeDaClasse>Id”) é reconhecida como a chave primária.
Operações Básicas (CRUD)🔗
Vamos ver como inserir, consultar🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio., atualizar e remover dados usando o EF Core. Suponha que já tenhamos uma instância do
MeuAppContext
configurada.
Inserir (Create)
using (var contexto = new MeuAppContext(options))
{
var novoProduto = new Produto
{
Nome = "Teclado Mecânico",
Preco = 200.99m,
EmEstoque = true
};
contexto.Produtos.Add(novoProduto);
contexto.SaveChanges();
}
Aqui, chamamos Add
para📦 List<T>: Dinamismo além dos Arrays!Descubra como utilizar List<T> em C# de forma eficiente. Aprenda a criar, manipular e otimizar listas para diferentes cenários com exemplos práticos.
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! inserir o objeto no banco e
SaveChanges()
efetiva a transação.
Consultar (Read)
using (var contexto = new MeuAppContext(options))
{
// Busca todos os produtos
var produtos = contexto.Produtos.ToList();
// Filtra por nome ou qualquer outra condição
var teclados = contexto.Produtos
.Where(p => p.Nome.Contains("Teclado"))
.ToList();
}
Dica: Em projetos maiores, usar consultas🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio. com
Where
, 🔍 LINQ Básico: Filtre Dados como um Garimpeiro Digital!Descubra como o LINQ facilita o processamento de dados em C#. Filtre, ordene e transforme coleções com precisão e eficiência no seu código.
Select
, 🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio.
OrderBy
etc., torna o código limpo, mas🔍 LINQ Básico: Filtre Dados como um Garimpeiro Digital!Descubra como o LINQ facilita o processamento de dados em C#. Filtre, ordene e transforme coleções com precisão e eficiência no seu código.
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. lembre-se de não exagerar na complexidade dentro da mesma query.
Atualizar (Update)
using (var contexto = new MeuAppContext(options))
{
var produtoExistente = contexto.Produtos.FirstOrDefault(p => p.Id == 1);
if (produtoExistente != null)
{
produtoExistente.Preco = 180.00m;
contexto.SaveChanges();
}
}
Depois que o objeto é carregado pelo contexto, basta alterar as propriedades⚡ Propriedades: Get e Set com Elegância (e sem Campos Privados Bagunçados)!Aprenda como utilizar propriedades em C# para encapsular dados, validar informações e manter um código organizado, seguro e de fácil manutenção. que deseja atualizar e chamar
SaveChanges()
.
Excluir (Delete)
using (var contexto = new MeuAppContext(options))
{
var produtoParaExcluir = contexto.Produtos.FirstOrDefault(p => p.Id == 2);
if (produtoParaExcluir != null)
{
contexto.Produtos.Remove(produtoParaExcluir);
contexto.SaveChanges();
}
}
Opcionalmente, podem usar Attach
ou Entry
se o objeto estiver fora do escopo🧠 Variáveis em C#: Onde os Dados Ganham Vida (e Nome!)Descubra como as variáveis em C# funcionam, com exemplos do mundo real, boas práticas de nomeação e dicas para otimizar seu código. atual do contexto, mas o conceito é similar.
LINQ: Consultas Fortemente Tipadas🔗
// Filtro + Ordenação + Paginação
var produtosPage = await _context.Produtos
.Where(p => p.Preco > 500)
.OrderByDescending(p => p.DataCadastro)
.Skip((pagina - 1) * 10)
.Take(10)
.ToListAsync();
// JOIN implícito
var produtosComCategoria = await _context.Produtos
.Include(p => p.Categoria)
.Select(p => new { p.Nome, Categoria = p.Categoria.Nome })
.ToListAsync();
Migrations: Versionando seu Banco🔗
# Terminal
dotnet ef migrations add InicialCreate
dotnet ef database update
1. Cria arquivos de migração🔄 Migrations: Evolua seu Banco sem Perder Dados!Aprenda como aplicar migrations com segurança usando Entity Framework Core para evoluir seu banco de dados sem perder dados. (timestamped)
2. Mantém histórico de alterações
3. Permite rollback com dotnet ef database update
📝 SQL Básico: SELECT, INSERT, UPDATE e DELETE para Sobreviver!Aprenda os comandos cruciais de SQL para manipular dados em bancos relacionais com exemplos práticos, dicas e boas práticas para livrarias. NomeDaMigraçãoAnterior
Relacionamentos 1:N e N:N🔗
public class Categoria
{
public int Id { get; set; }
public string Nome { get; set; }
public ICollection<Produto> Produtos { get; set; }
}
// Na configuração:
modelBuilder.Entity<Produto>()
.HasOne(p => p.Categoria)
.WithMany(c => c.Produtos);
modelBuilder.Entity<Produto>()
.HasMany(p => p.Tags)
.WithMany(t => t.Produtos)
.UsingEntity(j => j.ToTable("ProdutoTags"));
Performance: Evitando Armadilhas🔗
Problema🤝 GitHub Básico: Versionamento para Iniciantes!Descubra como o GitHub facilita colaboração, versionamento e organização de código com este tutorial prático e essencial para desenvolvedores iniciantes. Comum: SELECT
🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio. N+1
// RUIM: 1 query para produtos + N queries para categorias
var produtos = _context.Produtos.ToList();
foreach (var p in produtos)
{
var categoria = _context.Categorias.Find(p.CategoriaId);
}
// SOLUÇÃO: Eager Loading
var produtos = _context.Produtos.Include(p => p.Categoria).ToList();
- Use
AsNoTracking()
para consultas🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio. somente leitura
- Evite
ToList()
antes de filtrar🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio.
- Use índices em campos de busca frequentes
Raw SQL: Quando o ORM Não Basta🔗
var produtos = await _context.Produtos
.FromSqlRaw("SELECT * FROM Produtos WHERE Nome LIKE '%{0}%'", termoBusca)
.ToListAsync();
// Para procedures armazenadas
var resultado = await _context.Database
.ExecuteSqlRawAsync("EXEC AtualizarEstoque @produtoId, @quantidade",
parameters: new[] { produtoIdParam, quantidadeParam });
Projeto Prático: Sistema de Estoque🔗
Requisitos:
1. Cadastro de produtos🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio. com categorias
2. Controle de estoque com entradas/saídas
3. Relatório de produtos🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio. abaixo do estoque mínimo
Passo a Passo:
1. Criar📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos. entidades
Produto
, 🔢 Operadores Aritméticos: Faça Cálculos como uma Calculadora Humana!Aprenda a dominar operadores aritméticos em C# com exemplos práticos, técnicas de cálculo e dicas para evitar erros e maximizar resultados.
Categoria
, MovimentacaoEstoque
2. Configurar relacionamentos no DbContext
3. Implementar serviços com métodos🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. como
RegistrarEntradaEstoque
5. Implementar interface📜 Interfaces: Contratos que Garantem a Ordem no Universo OOP!Descubra como as interfaces em C# funcionam como contratos que garantem implementações flexíveis e robustas, facilitando o design e testes de sistemas. simples de console
// Exemplo de query complexa
var produtosBaixoEstoque = await _context.Produtos
.Where(p => p.EstoqueAtual < p.EstoqueMinimo)
.Include(p => p.Categoria)
.OrderBy(p => p.Nome)
.ToListAsync();
Resultado: Sistema completo com menos de 200 linhas de código!
Considerações Finais🔗
O EF Core simplifica enormemente o acesso e a manipulação de dados em C#, evitando que você se perca em um mar de SQL repetitivo. Ele oferece recursos📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos. para mapeamento avançado, validações e até mesmo controle de versões do schema (por meio de outras técnicas que não abordamos detalhadamente aqui). Tudo isso permite focar mais na lógica de negócio e menos em como conversar com o banco de dados.
Experimente nas suas aplicações, comece com exemplos simples e vá explorando aos poucos. Outros recursos como carregamento antecipado (eager loading), Lazy Loading e configurações de mapeamento avançadas estão ao seu dispor. Você logo perceberá que seu fluxo de trabalho🛠️ GitHub Actions para OSS: CI/CD Profissional de Graça!Descubra neste tutorial como automatizar testes, builds e deploys em projetos OSS com GitHub Actions, elevando a qualidade do seu software. para criar, ler e manipular dados vai ficar muito mais suave.
Agora que você conheceu o essencial do EF Core, pode aprofundar em outros tópicos específicos, como migrações, queries complexas e otimizações de performance🔄 StringBuilder: Quando Concatenar Strings Vira um Pesadelo!Descubra como o StringBuilder otimiza a concatenação em C#, evitando desperdício de memória e melhorando a performance das aplicações. Veja exemplos práticos! - tudo para aproveitar ao máximo essa mágica no seu código!
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.
Referências🔗
- .NET Documentation: learn.microsoft.com/pt-br/dotnet/
- Awesome .NET: github.com/quozd/awesome-dotnet
- C# Language Specification: learn.microsoft.com/pt-br/dotnet/csharp/language-reference/language-specification/
- GitHub: Microsoft/.NET: github.com/dotnet
- Microsoft Learn: C# e .NET: learn.microsoft.com/pt-br/dotnet/csharp/