W tym & wykluczanie typówIncluding & Excluding Types

W tym typu w modelu oznacza, że EF ma metadane dotyczące typu, który będzie podejmować próby odczytu i zapisu wystąpień z/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

Konwencja 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 uwzględniane są również metody.In addition, types that are mentioned in the OnModelCreating method are also included. Na koniec żadnych typów, które zostały znalezione przez cyklicznie badać właściwości nawigacji wykrytych 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 odnalezieniu wszystkich trzech typów:For example, in the following code listing all three types are discovered:

  • Blogponieważ jest widoczna w DbSet właściwości w tym kontekścieBlog because it is exposed in a DbSet property on the context

  • Postponieważ okaże się za pośrednictwem Blog.Posts właściwości nawigacjiPost because it is discovered via the Blog.Posts navigation property

  • AuditEntryponieważ jest wymieniony wOnModelCreatingAuditEntry 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; }
}

Adnotacji danychData Annotations

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

Interfejsu API FluentFluent API

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