Speichern verwandter DatenSaving Related Data

Sie können auch vornehmen, zusätzlich zu den isolierten Entitäten verwenden, der im Modell definierten Beziehungen.In addition to isolated entities, you can also make use of the relationships defined in your model.

Tipp

Sie können anzeigen, dass dieser Artikel Beispiel auf GitHub.You can view this article's sample on GitHub.

Hinzufügen von neuen Entitäten in einem DiagrammAdding a graph of new entities

Wenn Sie mehrere neue verknüpfte Entitäten erstellen, verursacht Hinzufügen von mindestens einem von ihnen an den Kontext zu hinzugefügt werden andere.If you create several new related entities, adding one of them to the context will cause the others to be added too.

Im folgenden Beispiel werden im Blog und drei verwandten Beiträge alle in der Datenbank eingefügt.In the following example, the blog and three related posts are all inserted into the database. Die Beiträge gefunden und hinzugefügt werden, da es über erreichbar sind, werden die Blog.Posts Navigationseigenschaft.The posts are found and added, because they are reachable via the Blog.Posts navigation property.

using (var context = new BloggingContext())
{
    var blog = new Blog
    {
        Url = "http://blogs.msdn.com/dotnet",
        Posts = new List<Post>
        {
            new Post { Title = "Intro to C#" },
            new Post { Title = "Intro to VB.NET" },
            new Post { Title = "Intro to F#" }
        }
    };

    context.Blogs.Add(blog);
    context.SaveChanges();
}

Wenn Sie eine neue Entität aus der Navigationseigenschaft einer Entität, die bereits vom Kontext nachverfolgt wird verweisen, wird die Entität ermittelt und in die Datenbank eingefügt.If you reference a new entity from the navigation property of an entity that is already tracked by the context, the entity will be discovered and inserted into the database.

Im folgenden Beispiel die post Entität eingefügt werden, weil es hinzugefügt wird die Posts Eigenschaft von der blog Entität, die sich aus der Datenbank abgerufen wurde.In the following example, the post entity is inserted because it is added to the Posts property of the blog entity which was fetched from the database.

using (var context = new BloggingContext())
{
    var blog = context.Blogs.Include(b => b.Posts).First();
    var post = new Post { Title = "Intro to EF Core" };

    blog.Posts.Add(post);
    context.SaveChanges();
}

Ändern von BeziehungenChanging relationships

Wenn Sie die Navigationseigenschaft einer Entität ändern, wird die entsprechende Fremdschlüsselspalte in der Datenbank geändert werden.If you change the navigation property of an entity, the corresponding changes will be made to the foreign key column in the database.

Im folgenden Beispiel die post Entität wird aktualisiert, um mit dem neuen gehören blog Entität da seine Blog Navigationseigenschaft auf festgelegt ist blog.In the following example, the post entity is updated to belong to the new blog entity because its Blog navigation property is set to point to blog. Beachten Sie, dass blog wird auch in die Datenbank eingefügt werden, da es sich um eine neue Entität handelt, die von der Navigationseigenschaft einer Entität verwiesen wird, die bereits vom Kontext nachverfolgt wird (post).Note that blog will also be inserted into the database because it is a new entity that is referenced by the navigation property of an entity that is already tracked by the context (post).

using (var context = new BloggingContext())
{
    var blog = new Blog { Url = "http://blogs.msdn.com/visualstudio" };
    var post = context.Posts.First();

    post.Blog = blog;
    context.SaveChanges();
}

Entfernen von BeziehungenRemoving relationships

Sie können eine Beziehung entfernen, indem Sie eine Referenz Navigation zu null, oder entfernen Sie die verknüpfte Entität aus einer Auflistung Navigation.You can remove a relationship by setting a reference navigation to null, or removing the related entity from a collection navigation.

Entfernen einer Beziehung kann Nebeneffekte haben, für die abhängige Entität, gemäß der Cascade gelöscht Verhalten in der Beziehung konfiguriert werden.Removing a relationship can have side effects on the dependent entity, according to the cascade delete behavior configured in the relationship.

Wird standardmäßig für die erforderlichen Beziehungen eine Cascade Delete-Verhalten konfiguriert ist, und die untergeordneten/abhängige Entität aus der Datenbank gelöscht werden.By default, for required relationships, a cascade delete behavior is configured and the child/dependent entity will be deleted from the database. Für optionale Beziehungen kaskadierendes Delete ist nicht standardmäßig konfiguriert werden, aber die foreign Key-Eigenschaft festgelegt werden auf Null.For optional relationships, cascade delete is not configured by default, but the foreign key property will be set to null.

Finden Sie unter erforderlichen und optionalen Beziehungen zu erfahren, wie die Requiredness von Beziehungen konfiguriert werden kann.See Required and Optional Relationships to learn about how the requiredness of relationships can be configured.

Finden Sie unter Löschweitergabe für Weitere Informationen zu den wie Löschweitergabe Verhalten arbeiten, wie diese explizit konfiguriert werden können und wie sie gemäß der Konvention ausgewählt werden.See Cascade Delete for more details on how cascade delete behaviors work, how they can be configured explicitly and how they are selected by convention.

Im folgenden Beispiel wird eine kaskadierte Löschung auf der Beziehung zwischen konfiguriert Blog und Post, sodass die post Entität aus der Datenbank gelöscht wird.In the following example, a cascade delete is configured on the relationship between Blog and Post, so the post entity is deleted from the database.

using (var context = new BloggingContext())
{
    var blog = context.Blogs.Include(b => b.Posts).First();
    var post = blog.Posts.First();

    blog.Posts.Remove(post);
    context.SaveChanges();
}