Inclusion et exclusion de TypesIncluding & Excluding Types

Dans les moyens de modèle EF a des métadonnées sur ce type et tentent de lire et écrire des instances à partir / vers la base de données, y compris un type.Including a type in the model means that EF has metadata about that type and will attempt to read and write instances from/to the database.

ConventionsConventions

Par convention, les types qui sont exposés dans DbSet propriétés de votre contexte sont incluses dans votre modèle.By convention, types that are exposed in DbSet properties on your context are included in your model. En outre, les types qui sont mentionnées dans le OnModelCreating méthode sont également incluses.In addition, types that are mentioned in the OnModelCreating method are also included. Enfin, tous les types qui sont trouvent en explorant les propriétés de navigation de types découverts de manière récursive sont également inclus dans le modèle.Finally, any types that are found by recursively exploring the navigation properties of discovered types are also included in the model.

Par exemple, les trois types sont détectés dans le code suivant :For example, in the following code listing all three types are discovered:

  • Blog car elle est exposée dans un DbSet propriété dans le contexteBlog because it is exposed in a DbSet property on the context

  • Post car il est découvert par le biais de la Blog.Posts propriété de navigationPost because it is discovered via the Blog.Posts navigation property

  • AuditEntry car il sera mentionné dans OnModelCreatingAuditEntry because it is mentioned in OnModelCreating

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

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<AuditEntry>();
    }
}

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

    public List<Post> Posts { get; set; }
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public Blog Blog { get; set; }
}

public class AuditEntry
{
    public int AuditEntryId { get; set; }
    public string Username { get; set; }
    public string Action { get; set; }
}

Annotations de donnéesData Annotations

Vous pouvez utiliser des Annotations de données pour exclure un type à partir du modèle.You can use Data Annotations to exclude a type from the model.

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

    public BlogMetadata Metadata { get; set; }
}

[NotMapped]
public class BlogMetadata
{
    public DateTime LoadedFromDatabase { get; set; }
}

API FluentFluent API

Vous pouvez utiliser l’API Fluent pour exclure un type à partir du modèle.You can use the Fluent API to exclude a type from the model.

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

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Ignore<BlogMetadata>();
    }
}

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

    public BlogMetadata Metadata { get; set; }
}

public class BlogMetadata
{
    public DateTime LoadedFromDatabase { get; set; }
}