IndeksyIndexes

Indeksy są typowe pojęcia w wielu magazynach danych.Indexes are a common concept across many data stores. Podczas ich wdrażania w magazynie danych mogą się różnić, są one używane do lepiej wyszukiwań na podstawie kolumny (lub zestaw kolumn) wydajne.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

Zgodnie z Konwencją indeksu jest tworzony w każdej właściwości (lub zestaw właściwości), używany jako klucza obcego.By convention, an index is created in each property (or set of properties) that are used as a foreign key.

Adnotacje danychData Annotations

Nie można utworzyć indeksy przy użyciu adnotacji danych.Indexes can not be created using data annotations.

Interfejs Fluent APIFluent API

Interfejs Fluent API służy do określenia indeksu w jednej właściwości.You can use the Fluent API to specify an index on a single property. Indeksy są domyślnie nie jest unikatowa.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ć indeks 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 odrębnym zestawem właściwości.There is only one index per distinct set of properties. W przypadku konfigurowania indeksu na zbiór właściwości, które ma już zdefiniowane, indeks przy Konwencji lub poprzedniej konfiguracji, za pomocą interfejsu API Fluent następnie spowoduje zmianę definicji 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 dodatkowo skonfigurować indeks, który został utworzony przez Konwencję.This is useful if you want to further configure an index that was created by convention.