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.