Uwzględnianie i wykluczanie typówIncluding & Excluding Types

W tym typu w modelu oznacza, że EF ma metadane o typ, który podejmie próbę odczytu i zapisu wystąpienia z i do bazy danych.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.

KonwencjeConventions

Zgodnie z Konwencją, typy, które są widoczne w DbSet właściwości kontekstu znajdują się w modelu.By convention, types that are exposed in DbSet properties on your context are included in your model. Ponadto, typy, które są wymienione w OnModelCreating metody dostępne są również.In addition, types that are mentioned in the OnModelCreating method are also included. Ponadto wszystkie typy, które znajdują się przez rekursywnie Eksplorowanie właściwości nawigacji odnalezionych typów znajdują się również w modelu.Finally, any types that are found by recursively exploring the navigation properties of discovered types are also included in the model.

Na przykład w poniższym fragmencie kodu wszystkich trzech typów zostaną wykryte:For example, in the following code listing all three types are discovered:

  • Blog ponieważ jest ona uwidoczniona w DbSet właściwości w kontekścieBlog because it is exposed in a DbSet property on the context

  • Post ponieważ jest odnalezione Blog.Posts właściwość nawigacjiPost because it is discovered via the Blog.Posts navigation property

  • AuditEntry ponieważ są one wymienione w 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; }
}

Adnotacje danychData Annotations

Korzystanie z adnotacji danych, aby wyłączyć typ z modelu.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; }
}

Interfejs Fluent APIFluent API

Aby wyłączyć typ z modelu, można użyć Fluent API.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; }
}