Entity Framework Code First Fluent Api: добавление индексов в столбцы

Я использую EF 4.2 CF и хочу создать индексы для определенных столбцов в моих объектах POCO.

В качестве примера допустим, что у нас есть этот класс сотрудника:

public class Employee
{
  public int EmployeeID { get; set; }
  public string EmployeeCode { get; set; }
  public string FirstName { get; set; }
  public string LastName { get; set; }
  public DateTime HireDate { get; set; }
}

Мы часто ищем сотрудников по их кодам EmployeeCode и с тех пор. Есть Многим сотрудникам было бы неплохо, если бы это было проиндексировано по соображениям производительности.

Можем ли мы как-нибудь сделать это с помощью свободного API? или, возможно, аннотации данных?

Я знаю, что можно выполнять команды sql примерно так:

context.Database.ExecuteSqlCommand("CREATE INDEX IX_NAME ON ...");

Я бы очень хотел избежать подобного сырого SQL.

Я знаю, что этого не существует, но ищу что-то в этом роде:

class EmployeeConfiguration : EntityTypeConfiguration<Employee>
    {
        internal EmployeeConfiguration()
        {
            this.HasIndex(e => e.EmployeeCode)
                .HasIndex(e => e.FirstName)
                .HasIndex(e => e.LastName);
        }
    }

или, возможно, используя System.ComponentModel.DataAnnotations , POCO может выглядеть так (опять же, я знаю, что этого не существует):

public class Employee
{
  public int EmployeeID { get; set; }
  [Indexed]
  public string EmployeeCode { get; set; }
  [Indexed]
  public string FirstName { get; set; }
  [Indexed]
  public string LastName { get; set; }
  public DateTime HireDate { get; set; }
}

У кого-нибудь есть идеи, как это сделать, или, если есть какие-либо планы реализовать способ сделать это, сначала код?

ОБНОВЛЕНИЕ: Как упоминалось в ответе Роббы, эта функция реализовано в EF версии 6.1

63
задан Robba 15 April 2014 в 08:53
поделиться