IndeksyIndexes

Indeksy są wspólnej definicji w wielu sklepach danych.Indexes are a common concept across many data stores. Podczas wdrażania ich w magazynie danych mogą się różnić, są one używane do lepiej wyszukiwań na podstawie kolumny (lub zestaw kolumn) skuteczne.While their implementation in the data store may vary, they are used to make lookups based on a column (or set of columns) more efficient.

KonwencjeConventions

Konwencja indeks jest tworzony w każdej właściwości (lub zbiór właściwości), używanych jako klucz obcy.By convention, an index is created in each property (or set of properties) that are used as a foreign key.

Adnotacji danychData Annotations

Nie można utworzyć indeksy za pomocą adnotacji danych.Indexes can not be created using data annotations.

Interfejsu API FluentFluent API

Interfejsu API Fluent służy do określenia indeksu dla jednej właściwości.You can use the Fluent API to specify an index on a single property. Domyślnie indeksy są unikatowe.By default, indexes are non-unique.

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

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Blog>()
            .HasIndex(b => b.Url);
    }
}

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

Można również określić czy indeksu powinna być unikatowa, co oznacza, że nie dwie jednostki może mieć tej samej wartości dla danej właściwości.You can also specify that an index should be unique, meaning that no two entities can have the same value(s) for the given property(s).

        modelBuilder.Entity<Blog>()
            .HasIndex(b => b.Url)
            .IsUnique();

Można również określić indeksu przez więcej niż jedną kolumnę.You can also specify an index over more than one column.

class MyContext : DbContext
{
    public DbSet<Person> People { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Person>()
            .HasIndex(p => new { p.FirstName, p.LastName });
    }
}

public class Person
{
    public int PersonId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

Porada

Istnieje tylko jeden indeks na osobny zestaw właściwości.There is only one index per distinct set of properties. Jeśli Konfigurowanie indeksu na zbiór właściwości, które jest już zdefiniowana, indeksu przez Konwencję lub poprzednią konfigurację za pomocą interfejsu API Fluent następnie zmienia się definicji tego indeksu.If you use the Fluent API to configure an index on a set of properties that already has an index defined, either by convention or previous configuration, then you will be changing the definition of that index. Jest to przydatne, jeśli chcesz kontynuować konfigurowanie indeksu, który został utworzony przez Konwencję.This is useful if you want to further configure an index that was created by convention.