Я использую 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