Einschließlich & Typen ausschließenIncluding & Excluding Types

Einschließlich eines Typs in das Modell bedeutet, denen EF über Metadaten verfügt, die geben und versucht, lesen und Schreiben von Instanzen von/zu der Datenbank.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.

KonventionenConventions

Gemäß der Konvention werden die Typen, die in verfügbar gemacht werden DbSet Eigenschaften auf den Kontext in Ihrem Modell enthalten sind.By convention, types that are exposed in DbSet properties on your context are included in your model. Typen, die in erwähnt werden außerdem die OnModelCreating -Methode sind ebenfalls enthalten.In addition, types that are mentioned in the OnModelCreating method are also included. Schließlich sind alle Typen, die durch Untersuchen der Eigenschaften von ermittelten Typen rekursiv gefunden werden ebenfalls im Modell enthalten.Finally, any types that are found by recursively exploring the navigation properties of discovered types are also included in the model.

Im folgenden Codebeispiel werden z. B. alle drei Typen ermittelt:For example, in the following code listing all three types are discovered:

  • BlogDa es in verfügbar gemacht wurde eine DbSet Eigenschaft im KontextBlog because it is exposed in a DbSet property on the context

  • PostDa es sich bei der Erkennung über die Blog.Posts NavigationseigenschaftPost because it is discovered via the Blog.Posts navigation property

  • AuditEntryDa es in erwähnteOnModelCreatingAuditEntry 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; }
}

DatenanmerkungenData Annotations

Sie können Datenanmerkungen verwenden, um einen Typ aus dem Modell auszuschließen.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; }
}

Fluent-APIFluent API

Sie können die Fluent-API verwenden, um einen Typ aus dem Modell auszuschließen.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; }
}