DziedziczenieInheritance

Dziedziczenie w modelu EF służy do kontrolowania sposobu dziedziczenia klas jednostek jest reprezentowana w bazie danych.Inheritance in the EF model is used to control how inheritance in the entity classes is represented in the database.

KonwencjeConventions

Według Konwencji jest dostawca bazy danych, aby określić sposób dziedziczenia zostanie odwzorowane w bazie danych.By convention, it is up to the database provider to determine how inheritance will be represented in the database. Zobacz dziedziczenia (relacyjnej bazy danych) dla obsługi to u dostawcy relacyjnej bazy danych.See Inheritance (Relational Database) for how this is handled with a relational database provider.

EF tylko umożliwią skonfigurowanie dziedziczenia, jeśli dwa lub więcej dziedziczonych typów jawnie znajdują się w modelu.EF will only setup inheritance if two or more inherited types are explicitly included in the model. EF nie będą skanować pod kątem podstawowej lub pochodnych typów, które w przeciwnym razie nie zostały uwzględnione w modelu.EF will not scan for base or derived types that were not otherwise included in the model. Typów można uwzględnić w modelu, w przypadku wystawianego DbSet dla każdego typu w hierarchii dziedziczenia.You can include types in the model by exposing a DbSet for each type in the inheritance hierarchy.

class MyContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<RssBlog> RssBlogs { get; set; }
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
}

public class RssBlog : Blog
{
    public string RssUrl { get; set; }
}

Jeśli nie chcesz ujawnić DbSet dla jednego lub więcej obiektów w hierarchii można użyć interfejsu API Fluent, aby upewnić się, że znajdują się w modelu.If you don't want to expose a DbSet for one or more entities in the hierarchy, you can use the Fluent API to ensure they are included in the model. A jeśli użytkownik nie należy polegać na konwencje można określić typu podstawowego jawnie za pomocą HasBaseType.And if you don't rely on conventions you can specify the base type explicitly using HasBaseType.

class MyContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<RssBlog>().HasBaseType<Blog>();
    }
}

Uwaga

Można użyć .HasBaseType((Type)null) można usunąć typu jednostki z hierarchii.You can use .HasBaseType((Type)null) to remove an entity type from the hierarchy.

Adnotacji danychData Annotations

Za pomocą adnotacji danych nie można skonfigurować dziedziczenia.You cannot use Data Annotations to configure inheritance.

Interfejsu API FluentFluent API

Interfejsu API Fluent dziedziczenia zależy od dostawcy bazy danych, którego używasz.The Fluent API for inheritance depends on the database provider you are using. Zobacz dziedziczenia (relacyjnej bazy danych) konfiguracji można wykonać dla dostawcy relacyjnej bazy danych.See Inheritance (Relational Database) for the configuration you can perform for a relational database provider.