Incluir e excluir tiposIncluding & Excluding Types

Incluindo os meios de modelo EF tem metadados sobre que tipo e tentarão ler e gravar as instâncias de banco de dados de/para um tipo.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.

ConvençõesConventions

Por convenção, os tipos que são expostos no DbSet propriedades em seu contexto estão incluídas em seu modelo.By convention, types that are exposed in DbSet properties on your context are included in your model. Além disso, os tipos que são mencionadas no OnModelCreating método também estão incluídos.In addition, types that are mentioned in the OnModelCreating method are also included. Por fim, todos os tipos que são encontrados pelo recursivamente Explorando as propriedades de navegação de tipos descobertos também estão incluídos no modelo.Finally, any types that are found by recursively exploring the navigation properties of discovered types are also included in the model.

Por exemplo, na listagem de código a seguir são descobertos todos os três tipos:For example, in the following code listing all three types are discovered:

  • Blog porque ele é exposto em um DbSet propriedade no contextoBlog because it is exposed in a DbSet property on the context

  • Post porque ele é descoberto por meio de Blog.Posts propriedade de navegaçãoPost because it is discovered via the Blog.Posts navigation property

  • AuditEntry porque ele é mencionado na 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; }
}

Anotações de dadosData Annotations

Você pode usar anotações de dados para excluir um tipo de modelo.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 fluenteFluent API

Você pode usar a API Fluent para excluir um tipo de modelo.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; }
}