EF Core - Definindo e atualizando o relacionamento muitos-para-muitos - II
Hoje como definir e atualizar o relacionamento muitos-para-muitos usando o EF Core. |
Continuando a primeira parte do artigo vamos incluir e atualizar dados em um relacionamento muitos para muitos.
No primeira parte do artigo definimos as entidades e usando o EF Core definimos o relacionamento muitos-para-muitos entre as tabelas Livros e Autores, onde um livro pode ter muitos autores e um autor pode ter muitos livros. A figura a seguir descreve o relacionamento definido:
Vamos agora usar o projeto já criado para incluir e atualizar dados neste contexto.
Incluindo dados
O código para incluir dados neste tipo de relacionamento no EF Core é mais simples do que no EF 6.
No arquivo Program.cs inclua o código a seguir no método Main() e defina o método IncluirDados():
using System;
using System.Collections.Generic;
namespace EFCore_Muitos_Muitos
{
class Program
{
static void Main(string[] args)
{
IncluirDados();
}
private static void IncluirDados()
{
using (var context = new AppDbContext())
{
var livro = new Livro
{
Titulo = "Criando aplicações Mobile",
Lancamento = new DateTime(2017, 1, 1),
ISBN = "978-3-16-148410-0",
Preco = 220
};
var autor = new Autor { Nome = "Gerald", SobreNome="Versalious", Pais= "EUA" };
livro.LivrosAutores = new List<LivroAutor>
{
new LivroAutor {
Autor = autor,
Livro = livro,
}
};
//Inclui o livro e seus relacionamentos
context.Livros.Add(livro);
context.SaveChanges();
}
}
}
}
|
Criamos uma instância da classe AppDbContext e a seguir incluimos um livro, um autor e atualizamos a tabela LivrosAutores; ao final incluimos o livro e persistimos os dados usando o método SaveChanges().
Vamos incluir mais um livro e um autor usando o livro : "UML Essential" de Martin Fowler.
Após as inclusões, abrindo o banco de dados DemoDB no SQL Server veremos os dados de cada tabela conforme abaixo:
Percebemos que é relativamente simples incluir dados neste relacionamento usando o EF Core.
Atualizando dados
Para atualizar dados vamos criar um método AtualizarDados() com o seguinte código :
private static void AtualizarDados()
{
using (var context = new AppDbContext())
{
//Localiza o livro a atualizar
var livro = context.Livros
.Include(p => p.LivrosAutores)
.Single(p => p.Titulo == "Criando aplicações Mobile");
//localiza o autor a ser usado var novoAutor = context.Autores.Single(p => p.Nome == "Martin"); //inclui um novo autor para o livro selecionado livro.LivrosAutores.Add(new LivroAutor { Livro = livro, Autor = novoAutor, }); context.SaveChanges(); } } |
No código estamos atualizando as informações dos autores para o livro 'Criando aplicações Mobile', incluindo o autor 'Martin Fowler'.
Agora para poder exibir os dados dos livros e autores existentes nas tabelas vamos criar o método ExibeDados():
3- ExibeDados
private static void ExibeDados(AppDbContext context)
{
Console.WriteLine($"Livros e Autores");
var livros = context.Livros
.Include(e => e.LivrosAutores)
.ThenInclude(e => e.Autor)
.ToList();
foreach (var livro in livros)
{
Console.WriteLine($" Livro {livro.Titulo}");
foreach (var autor in livro.LivrosAutores.Select(e => e.Autor))
{
Console.WriteLine($" autor: {autor.Nome} {autor.SobreNome}");
}
}
Console.WriteLine();
}
|
No código acima, definimos uma consulta onde usamos o método include para incluir os dados relacionados da entidade LivrosAutores e a seguir usamos o método ThenInclude para fazer uma busca detalhada e incluir os dados relacionados dos autores.
A seguir percorremos os livros e seus autores exibindo o resultado no console:
Assim tratar o relacionamento muitos para muitos no
EF Core não é tão complicado assim para cenários mais siimples.
Pegue o código usado no projeto aqui: EFCore_Muitos_Muitos_2.zip
"E esta é a
mensagem que dele(Jesus) ouvimos, e vos anunciamos: que Deus é luz, e não há
nele trevas nenhumas."
1
João 1:5
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
ASP .NET Core 2 - MiniCurso Básico - Macoratti
ASP .NET Core - Macoratti
Conceitos - .NET Framework versus .NET Core - Macoratti
ASP .NET Core - Conceitos Básicos - Macoratti.net
EF Core - Iniciando com o Entity Framework Core - Macoratti
Apresentando o EF Core Power Tools - Macoratti.net
Curso Entity Framework Core 2.0 - Vídeo Aulas - Macoratti
EF Core - Usando o EF Core com Windows Forms - (Crud ... - Macoratti
EF Core 2.0 - Scaffolding DbContext e Models usando CLI - Macoratti