索引

索引

索引是跨多个数据存储区的常见概念。尽管它们在数据存储中的实现可能会有所不同,但也可用于基于列(或一组列)更高效地进行查找。

不能使用数据批注创建索引。您可以使用 Fluent API 按如下方式为单个列指定索引:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>()
        .HasIndex(b => b.Url);
}Code language: JavaScript (javascript)

您还可以为多个列指定索引:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Person>()
        .HasIndex(p => new { p.FirstName, p.LastName });
}Code language: JavaScript (javascript)

索引唯一性

默认情况下,索引不唯一:允许多行具有与索引的列集相同的值。可使索引唯一,如下所示:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>()
        .HasIndex(b => b.Url)
        .IsUnique();
}Code language: JavaScript (javascript)

尝试为索引的列集插入多个具有相同值的实体将导致引发异常。

索引名称

按照约定,在关系数据库中创建的索引将命名为 IX_<type name>_<property name>。对于复合索引,<property name> 变成以下划线分隔的属性名称列表。

您可以使用 Fluent API 设置在数据库中创建的索引的名称:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Blog>()
        .HasIndex(b => b.Url)
        .HasName("Index_Url");
}Code language: JavaScript (javascript)
Previous:
Next:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注