六,索引原理与配置

索引原理与配置
  • 索引
    索引是许多数据常见概念,数据存储区中的实现可能有所不同,索引的作用是让基于列(或一组列) 的查找更高效。
    数据库索引是什么?
    数据库索引融会贯通
    20分钟数据库索引设计实战
    数据库索引为什么用B+树实现?

深入浅出数据库索引原理

modelBuilder.Entity< Blog>().HasIndex(b => b.Url);
modelBuilder.Entity< Blog>().HasIndex(b => b.Url).IsUnique();
modelBuilder.Entity< Person>().HasIndex(p => new { p.FirstName, p.LastName });

按照约定,EF Core 生成的索引名为 IX_< type name>_< property name> 格式。 对于复合索引 < property name> 使用
下划线分隔属性名称,可手动指定索引名称。

modelBuilder.Entity< Blog>().HasIndex(b => b.Url).HasName("Index_Url");
modelBuilder.Entity< Blog>().HasIndex(b => b.Url).HasFilter("[Url] IS NOT NULL");
modelBuilder.Entity< Blog>().HasIndex(b => b.Url).IsUnique().HasFilter(null);
  • 备用键
    除主键之外,备用键也能唯一标识一条数据(跟主键一样具有唯一约束)。备用键可以用作外键关系的目标。当使用关系数据
    库时,系统通常会在需要时默认你引入备用键,你无需手动配置它们,当然也可以手动配置。
    按照约定,系统将在识别外键属性目标(不是主键)时为你引入备用键,充当关系的目标。
modelBuilder.Entity<Post>().HasOne(p => p.Blog).WithMany(b => b.Posts).HasForeignKey(p => p.BlogUrl).HasPrincipalKey(b 
=> b.Url);

Fluent API 可用于手动配置要作为备用键的单个属性。

modelBuilder.Entity< Car>().HasAlternateKey(c => c.LicensePlate);
modelBuilder.Entity< Car>().HasAlternateKey(c => new { c.State, c.LicensePlate });

按照约定,备用键的索引和约束被命名为 AK_< type name>_< property name> 格式, 备用组合键 < property name> 为下划线分隔属性名称的列表。

可以使用 Fluent API 配置备用键的索引和约束名称。

modelBuilder.Entity<Car>().HasAlternateKey(c => c.LicensePlate).HasName("AlternateKey_LicensePlate");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值