public class People
{
public int Id { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
public string PhoneNumber { get; set; }
public string NationalInsuranceNo { get; set; }
}
Single column Indexes
modelBuilder.Entity<People>()
.Property(x => x.Firstname)
.HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute("ix_people_firstname")));
Multi Column Indexes
modelBuilder.Entity<People>()
.Property(x => x.Firstname)
.HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute("ix_people_fullname", 1)));
modelBuilder.Entity<People>()
.Property(x => x.Lastname)
.HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute("ix_people_fullname", 2)));
Unique Indexes
modelBuilder.Entity<People>()
.Property(x => x.NationalInsuranceNo)
.HasColumnAnnotation("Index",
new IndexAnnotation(new IndexAttribute("ix_people_nationalinsurance") {IsUnique = true}));
Clustered Indexes
modelBuilder.Entity<People>()
.Property(x => x.Id)
.HasColumnAnnotation("Index",
new IndexAnnotation(new IndexAttribute("ix_people_nationalinsurance") { IsClustered = true}));
What's Not Possible Using Fluent API
As of Entity Framework 6.1.1
- Include Fields
- Sort Order (ASC,DESC)
- Filtered Indexes
Whilst this is a big step forwards it still feels like a work in progress. I would hope to end up with a friendlier and more complete syntax for doing this something like...