Zapisywanie podstawoweBasic Save

Dowiedz się, jak dodawanie, modyfikowanie i usuwanie danych przy użyciu klas jednostek i kontekstu.Learn how to add, modify, and remove data using your context and entity classes.

Porada

Można wyświetlić w tym artykule przykładowe w witrynie GitHub.You can view this article's sample on GitHub.

Dodawanie danychAdding Data

Użyj DbSet.Add metodę, aby dodać nowe wystąpienia klas jednostek.Use the DbSet.Add method to add new instances of your entity classes. Dane zostanie wstawiony w bazie danych podczas wywoływania 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();

    Console.WriteLine(blog.BlogId + ": " +  blog.Url);
}

Porada

Metody Add, Dołącz i aktualizacji, wszystkie robocze na pełny wykres jednostek jest przekazywany do nich, zgodnie z opisem w powiązanych danych sekcji.The Add, Attach, and Update methods all work on the full graph of entities passed to them, as described in the Related Data section. Alternatywnie właściwość EntityEntry.State może służyć do ustawiania stanu pojedynczej jednostki.Alternately, the EntityEntry.State property can be used to set the state of just a single entity. Na przykład context.Entry(blog).State = EntityState.Modified.For example, context.Entry(blog).State = EntityState.Modified.

Aktualizowanie danychUpdating Data

EF automatycznie wykrywa zmiany wprowadzone do istniejącej jednostki, która jest śledzona przez kontekst.EF will automatically detect changes made to an existing entity that is tracked by the context. Obejmuje to jednostki, które możesz obciążenia/zapytań z bazy danych i jednostek, które zostały wcześniej dodane i zapisane w bazie danych.This includes entities that you load/query from the database, and entities that were previously added and saved to the database.

Po prostu zmodyfikuj wartości przypisane do właściwości, a następnie wywołać 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();
}

Usuwanie danychDeleting Data

Użyj DbSet.Remove metody, można usunąć wystąpień klas jednostek.Use the DbSet.Remove method to delete instances of your entity classes.

Jeśli ta jednostka już istnieje w bazie danych, zostaną usunięte podczas SaveChanges.If the entity already exists in the database, it will be deleted during SaveChanges. Jeśli jednostka nie został jeszcze zapisany w bazie danych (czyli jego śledzenia dodawania) zostaną usunięte z kontekstu, a nie będzie już wstawiany gdy SaveChanges jest wywoływana.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();
}

Wiele operacji w jednym SaveChangesMultiple Operations in a single SaveChanges

Można połączyć wiele operacji Dodawanie/aktualizowanie/usuwanie na jedno wywołanie SaveChanges.You can combine multiple Add/Update/Remove operations into a single call to SaveChanges.

Uwaga

W przypadku większości dostawców bazy danych SaveChanges jest transakcyjna.For most database providers, SaveChanges is transactional. Oznacza to wszystkie operacje będą sukcesem lub niepowodzeniem, a operacje nigdy nie lewej częściowo zastosowanych.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();
}