Grundlegender SpeichervorgangBasic Save

Erfahren Sie, wie Sie Daten mithilfe Ihrer Kontext- und Entitätsklassen hinzufügen, ändern und entfernen können.Learn how to add, modify, and remove data using your context and entity classes.

Tipp

Das in diesem Artikel verwendete Beispiel finden Sie auf GitHub.You can view this article's sample on GitHub.

Hinzufügen von DatenAdding Data

Verwenden Sie die Methode DbSet.Add, um Ihren Entitätsklassen neue Instanzen hinzuzufügen.Use the DbSet.Add method to add new instances of your entity classes. Die Daten werden in die Datenbank eingefügt, wenn Sie SaveChanges aufrufen.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);
}

Tipp

Die Methoden Add, Attach und Update wirken sich auf den vollständigen Graph an Entitäten aus, die an sie übergeben werden, wie im Abschnitt Relevante Daten beschrieben.The Add, Attach, and Update methods all work on the full graph of entities passed to them, as described in the Related Data section. Die Eigenschaft EntityEntry.State kann alternativ zum Festlegen des Zustands einer einzelnen Entität verwendet werden.Alternately, the EntityEntry.State property can be used to set the state of just a single entity. Beispielsweise context.Entry(blog).State = EntityState.Modified.For example, context.Entry(blog).State = EntityState.Modified.

Aktualisieren von DatenUpdating Data

EF erkennt automatisch Änderungen an einer vorhandenen Entität, die nach dem Kontext nachverfolgt wird.EF will automatically detect changes made to an existing entity that is tracked by the context. Dazu gehören Entitäten, die Sie aus der Datenbank laden oder abfragen, und Entitäten, die vorher der Datenbank hinzugefügt und darin gespeichert wurden.This includes entities that you load/query from the database, and entities that were previously added and saved to the database.

Ändern Sie einfach die Werte der Eigenschaften, und rufen Sie dann SaveChanges auf.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();
}

Löschen von DatenDeleting Data

Verwenden Sie die Methode DbSet.Remove, um Instanzen Ihrer Entitätsklassen zu löschen.Use the DbSet.Remove method to delete instances of you entity classes.

Wenn die Entität bereits in der Datenbank vorhanden ist, wird sie während des Aufrufs von SaveChanges gelöscht.If the entity already exists in the database, it will be deleted during SaveChanges. Wenn die Entität noch nicht in der Datenbank gespeichert wurde (d.h. sie wird als „hinzugefügt“ nachverfolgt), wird sie aus dem Kontext entfernt und nicht mehr eingefügt, wenn SaveChanges aufgerufen wird.If the entity has not yet been saved to the database (i.e. 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();
}

Mehrere Vorgänge in einem Aufruf von SaveChangesMultiple Operations in a single SaveChanges

Sie können Hinzufügungs-, Update- und Entfernungsvorgänge in einem einzelnen Aufruf von SaveChanges kombinieren.You can combine multiple Add/Update/Remove operations into a single call to SaveChanges.

Hinweis

Für die meisten Datenbankanbieter ist SaveChanges transaktional.For most database providers, SaveChanges is transactional. Das bedeutet, dass alle Vorgänge entweder erfolgreich oder gar nicht abgeschlossen werden und niemals nur teilweise angewendet werden.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();
}