创建索引
不能用特注,只能用API模式创建索引
您可以使用 "熟知 API" 按如下方式为单个列指定索引:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.HasIndex(b => b.Url) //创建普通索引
.HasName("Index_Url");//创建索引名称
}
您还可以为多个列指定索引:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>()C#
.HasIndex(p => new { p.FirstName, p.LastName });
}
还可以指定唯一索引:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Blog>()
.HasIndex(b => b.Url)
.IsUnique();
}
还可以有索引筛选器
MSSQL 可以创建筛选索引或者部分索引,这可以使您只为列的值的一个子集编制索引,从而减少索引的大小并改善性能和磁盘使用情况;
``` C#
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity
.HasIndex(b => b.Url)
.HasFilter("[Url] IS NOT NULL");
}
```
包含列
某些关系型数据库 MSSQL允许配置一组列,这些列包含在索引中,但不是其“键”的一部分,参考链接
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Post>()
.HasIndex(p => p.Url)
.IncludeProperties(p => new
{
p.Title,
p.PublishedOn
});
}