我正在运行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; }
}
有没有人对如何做到这一点有什么想法,或者是否有计划实现这种方法?
更新:正如Robba的回答中提到的那样,这个功能在EF版本6.1中实现了。