Curso Entity Framework - CRUD no cenário Conectado - XVII
Nesta aula vamos falar sobre o CRUD no cenário conectado no Entity Framework.(aula anterior) |
Realizar as operações CRUD no cenário conectado é muito simples porque o contexto automaticamente rastreia as modificações ocorridas na entidade durante o seu tempo de vida visto que AutoDetectChangesEnabled é definida como true por padrão no Entity Framework.
O CRUD no cenário Conectado
Vamos usar a solução criada na aula 11 - Entity Framework - Consultas Projeção - para mostrar o CRUD no cenário conectado.
Abra a solução EF6_EscolaDB criada e após isso inclua um novo projeto do tipo Console Application com o nome EF6_CRUDConectado na solução;
No Menu FILE clique em Add -> New Project e selecione o template Visual C# -> Console Application informando o nome EF6_CRUDConectado:
Para concluir inclua uma referência no projeto EF6_CRUDConectado para o projeto EF6_EscolaDB e inclua também a string de conexão do projeto EF6_EscolaDB no arquivo App.Config do projeto atual.
A seguir inclua o código abaixo no arquivo Program.cs:
using System;
using System.Linq;
using EF6_EscolaDB;
namespace EF6_CRUDConectado
{
class Program
{
static void Main(string[] args)
{
//note que estamos trabalhando no mesmo contexto
//------------------------------------------------
using (var ctx = new EscolaDBEntities())
{
var listaAluno = ctx.Alunos.ToList<Aluno>();
//Cria um novo aluno
ctx.Alunos.Add(new Aluno() { AlunoNome = " * Novo Aluno *" });
//Realiza uma operação de atualização
Aluno alunoAlterado = listaAluno.Where(a => a.AlunoNome == "Aluno1").FirstOrDefault<Aluno>();
alunoAlterado.AlunoNome = "Aluno 1 Editado";
//Realiza uma exclusão
ctx.Alunos.Remove(listaAluno.ElementAt<Aluno>(0));
//Persiste as operações no banco de dados
ctx.SaveChanges();
Console.ReadKey();
}
}
}
}
|
CRUD no cenário conectado |
Se a propriedade AutoDetectChangesEnabled for definida como false:
context.Configuration.AutoDetectChangesEnabled = false
então o contexto não poderá detectar alterações feitas nas entidades existentes
e por isso não vai executar a consulta de atualização.
Para isso você precisa chamar o método context.ChangeTracker.DetectChanges()
antes de SaveChanges(), a fim de detectar entidades editadas e marcar o
seu status como Modified (modificado).
O Contexto detecta as operações para adicionar e excluir a entidade, quando a
operação é realizada apenas no DbSet. Se você executar a as operações
para adicionar e excluir uma entidade na coleção ou lista separada, então ele
não vai detectar essas alterações.
O código a seguir não irá inserir ou excluir um aluno. Ele só vai atualizar a
entidade Aluno, porque estamos adicionando e excluindo entidades da lista não do
DbSet.
using System;
using System.Linq;
using EF6_EscolaDB;
namespace EF6_CRUDConectado
{
class Program
{
static void Main(string[] args)
{
//note que estamos trabalhando no mesmo contexto
//------------------------------------------------
using (var ctx = new EscolaDBEntities())
{
var listaAluno = ctx.Alunos.ToList<Aluno>();
//Cria um novo aluno na lista
listaAluno.Add(new Aluno() { AlunoNome = " * Novo Aluno *" });
//Realiza uma operação de atualização (somente esta operação é persistida)
Aluno alunoAlterado = listaAluno.Where(a => a.AlunoNome == "Aluno1").FirstOrDefault<Aluno>();
alunoAlterado.AlunoNome = "Aluno 1 Editado";
//Realiza uma exclusão na lista
if(listaAluno.Count > 0)
listaAluno.Remove(listaAluno.ElementAt<Aluno>(0));
//Persiste as operações no banco de dados
ctx.SaveChanges();
Console.ReadKey();
}
}
}
}
|
CRUD realizado na lista e não do DbSet |
Na próxima aula veremos o CRUD no cenário desconectado no Entity Framework.
E, porque sois
filhos, Deus enviou aos vossos corações o Espírito de
seu Filho, que clama: Aba, Pai.
Assim que já não és mais servo, mas filho; e, se és
filho, és também herdeiro de Deus por Cristo.
Gálatas 4:6,7
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências: