1. 程式人生 > 實用技巧 >3.2 建立模型-索引

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
        });
}