- 索引
- 惯例
- 数据注解
- 流式 API
索引
索引是在大多数数据存储中通用的概念。尽管其在不同的数据存储中的实现可能有所不同,但它们都是用来提高基于数据列(或者数据列集合)的查询效率的。
惯例
按照惯例,每个(或者每一组)被用作外键的属性都会创建对应的索引。
数据注解
不能使用数据注解创建索引。
流式 API
可以使用流式 API 来在单一属性上指定索引。默认情况下,这些不是唯一索引。
class MyContext : DbContext{public DbSet<Blog> Blogs { get; set; }protected override void OnModelCreating(ModelBuilder modelBuilder){modelBuilder.Entity<Blog>().HasIndex(b => b.Url);}}public class Blog{public int BlogId { get; set; }public string Url { get; set; }}
还可以将索引指定为唯一索引,这意味在给定的属性上两个实体不会具有相同的值。
modelBuilder.Entity<Blog>().HasIndex(b => b.Url).IsUnique();
还可以在多个数据列上指定索引。
class MyContext : DbContext{public DbSet<Person> People { get; set; }protected override void OnModelCreating(ModelBuilder modelBuilder){modelBuilder.Entity<Person>().HasIndex(p => new { p.FirstName, p.LastName });}}public class Person{public int PersonId { get; set; }public string FirstName { get; set; }public string LastName { get; set; }}
提示
每个独立属性组上只能有一个索引。如果你使用流式 API在已定义了索引的属性组上配置索引,不管是惯例定义还是前面所述的配置,那么你就更改了索引的定义。如果你在已按照惯例创建的索引上做更多配置,这会很有用。
