Salvamento básicoBasic Save

Saiba como adicionar, modificar e remover dados usando as classes de entidade e contexto.Learn how to add, modify, and remove data using your context and entity classes.

Dica

Veja o exemplo deste artigo no GitHub.You can view this article's sample on GitHub.

Adicionando dadosAdding Data

Use o método DbSet.Add para adicionar novas instâncias de suas classes de entidade.Use the DbSet.Add method to add new instances of your entity classes. Os dados serão inseridos no banco de dados quando você chamar SaveChanges.The data will be inserted in the database when you call SaveChanges.

using (var context = new BloggingContext())
{
    var blog = new Blog { Url = "http://sample.com" };
    context.Blogs.Add(blog);
    context.SaveChanges();
}

Dica

Os métodos Adicionar, Anexar e Atualizar funcionam no gráfico completo de entidades aprovadas para eles, conforme descrito na seção Dados Relacionados.The Add, Attach, and Update methods all work on the full graph of entities passed to them, as described in the Related Data section. Como alternativa, a propriedade EntityEntry.State pode ser usada para definir o estado de uma única entidade.Alternately, the EntityEntry.State property can be used to set the state of just a single entity. Por exemplo, context.Entry(blog).State = EntityState.Modified.For example, context.Entry(blog).State = EntityState.Modified.

Atualizando dadosUpdating Data

O EF detectará automaticamente as alterações feitas em uma entidade existente que é controlada pelo contexto.EF will automatically detect changes made to an existing entity that is tracked by the context. Isso inclui as entidades que você carrega/consulta do banco de dados e as entidades que foram anteriormente adicionadas e salvas no banco de dados.This includes entities that you load/query from the database, and entities that were previously added and saved to the database.

Basta modificar os valores atribuídos às propriedades e chamar SaveChanges.Simply modify the values assigned to properties and then call SaveChanges.

using (var context = new BloggingContext())
{
    var blog = context.Blogs.First();
    blog.Url = "http://sample.com/blog";
    context.SaveChanges();
}

Excluindo dadosDeleting Data

Use o método DbSet.Remove para excluir instâncias das suas classes de entidade.Use the DbSet.Remove method to delete instances of your entity classes.

Se a entidade já existir no banco de dados, ela será excluída durante SaveChanges.If the entity already exists in the database, it will be deleted during SaveChanges. Se a entidade ainda não tiver sido salva no banco de dados (ou seja, ela for rastreada como adicionada), ela será removida do contexto e não será mais inserida quando SaveChanges for chamado.If the entity has not yet been saved to the database (that is, it is tracked as added) then it will be removed from the context and will no longer be inserted when SaveChanges is called.

using (var context = new BloggingContext())
{
    var blog = context.Blogs.First();
    context.Blogs.Remove(blog);
    context.SaveChanges();
}

Várias operações em um único SaveChangesMultiple Operations in a single SaveChanges

Você pode combinar várias operações Adicionar/Carregar/Remover em uma única chamada para SaveChanges.You can combine multiple Add/Update/Remove operations into a single call to SaveChanges.

Observação

Para a maioria dos provedores de banco de dados, SaveChanges é transacional.For most database providers, SaveChanges is transactional. Isso significa que todas as operações serão bem-sucedidas ou falharão e as operações nunca ficarão parcialmente aplicadas.This means all the operations will either succeed or fail and the operations will never be left partially applied.

using (var context = new BloggingContext())
{
    // seeding database
    context.Blogs.Add(new Blog { Url = "http://sample.com/blog" });
    context.Blogs.Add(new Blog { Url = "http://sample.com/another_blog" });
    context.SaveChanges();
}

using (var context = new BloggingContext())
{
    // add
    context.Blogs.Add(new Blog { Url = "http://sample.com/blog_one" });
    context.Blogs.Add(new Blog { Url = "http://sample.com/blog_two" });

    // update
    var firstBlog = context.Blogs.First();
    firstBlog.Url = "";

    // remove
    var lastBlog = context.Blogs.Last();
    context.Blogs.Remove(lastBlog);

    context.SaveChanges();
}