我正在运行 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; }
}
我们经常通过员工代码来搜索员工,由于有很多员工,出于性能原因将其编入索引会很好。
我们可以用 Fluent 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; }
}
任何人对如何做到这一点有任何想法,或者是否有任何计划实施一种方法来做到这一点,代码优先的方式?
UPDATE:正如 Robba 的回答中提到的,该功能在 EF 6.1 版本中实现