Back-End

19 nov, 2015

Curso Entity Framework – Adicionando uma nova entidade no cenário desconectado

Publicidade

Nesta aula vamos mostrar como adicionar uma nova entidade no cenário desconectado, que insere uma nova linha na tabela do banco de dados.

Caso queira ver as aulas anteriores, clique aqui.

Para incluir uma nova entidade simples em um cenário desconectado, podemos usar as seguintes abordagens:

  • Code First – Criamos classes POCO (Plain Old CLR Objects) que são mapeadas para as entidades;
  • Database First – Mapeamos para um banco de dados que já existe;
  • Model First –  Criamos o Modelo conceitual primeiro e depois é gerado o script para criar o banco de dados.

As classes POCO –  POCO-Plain Old CLR Object – são classes simples de domínio que possuem apenas get/sets e um construtor e que não dependem de nenhum framework; as classes POCO não são obrigadas a herdar de nenhuma outra classe ou implementar nenhuma interface. Portanto, as classes POCO são independente de frameworks.

Preparando o ambiente

Vamos usar a solução criada na aula Entity Framework – Consultas Projeção para mostrar como incluir uma nova entidade no cenário desconectado. Abra esta solução e aproveite o projeto EF6_CRUDDesconectado que já criamos.

Incluindo uma nova entidade simples

Neste exemplo usamos o método Add() para incluir um novo objeto Aluno no DbSet Alunos. Para persistir os dados no banco de dados usamos o método SaveChanges().

        static void AdicionandoUmaNovaEntidadeSimples()
        {
            // cria uma nova entidade Aluno no cenário desconectado (fora do escopo de DbContext)
            var novoAluno = new Aluno();
            //define o nome do Aluno
            novoAluno.AlunoNome = "Macoratti - novo";
            //cria o objeto DbContext
            using (var dbCtx = new EscolaDBEntities())
            {
                //Adiciona o objeto Aluno no DBset Alunos
                dbCtx.Alunos.Add(novoAluno);
                // Chama o método SaveChanges para salvar o aluno no banco de dados
                dbCtx.SaveChanges();
            }
        }

Veja que primeiro criamos um novo objeto da entidade Aluno e definimos sua propriedade AlunoNome e a seguir criamos um objeto DBContext e adicionamos o novo objeto no EntitySet Alunos.

Podemos também alternativamente adicionar uma entidade no DbEntityEntry usando o método Entry e definir o seu EntityState como Added:

static void AdicionandoUmaNovaEntidadeSimples2()
        {
            // cria uma nova entidade Aluno no cenário desconectado (fora do escopo de DbContext)
            var novoAluno = new Aluno();
            //define o nome do Aluno
            novoAluno.AlunoNome = "Macoratti - novo";
            //cria o objeto DbContext
            using (var dbCtx = new EscolaDBEntities())
            {
                //Adiciona a entidade novoAluno no DbEntityEntry e marca o seu EntityState como Added
                dbCtx.Entry(novoAluno).State = System.Data.Entity.EntityState.Added;
                // Chama o método SaveChanges para salvar o aluno no banco de dados
                dbCtx.SaveChanges();
            }
        }

Na próxima aula veremos como atualizar uma entidade simples em um cenário desconectado no Entity Framework.