3.2 创建模型-索引

创建索引

不能用特注,只能用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
        });
}
posted @ 2020-07-22 14:16  maanshancss  阅读(237)  评论(0编辑  收藏  举报