在 DBFirst 场景中,在映射中添加 .HasIndex() 有啥好处?

Posted

技术标签:

【中文标题】在 DBFirst 场景中,在映射中添加 .HasIndex() 有啥好处?【英文标题】:What is the benefit of adding .HasIndex() in your mappings, on a DBFirst scenario?在 DBFirst 场景中,在映射中添加 .HasIndex() 有什么好处? 【发布时间】:2019-06-15 09:03:20 【问题描述】:

我一直在搜索 EF Core 文档,如果在实体映射上添加 .HasIndex() 会给 DbFirst 方案带来任何好处,但我找不到任何东西。

我有这个 20yo 的数据库,它创建了所有必要的表和索引,我正在映射一些表以使用 EF Core 查询它们。我想知道,在您永远不会通过代码更新表模式的 DbFirst 场景中映射索引有什么好处?它会影响 EF 生成 SQL 查询的方式吗?

【问题讨论】:

【参考方案1】:

没有。 HasIndex 仅适用于为代码优先/迁移创建索引。您不需要为 EF 映射索引来生成或优化查询。

我确实建议在将 EF 引入项目后记录/报告执行的最常见查询,以确定是否有新的索引或对现有索引的调整可能有利于您的应用程序的性能。 (即包含的列)

【讨论】:

以上是关于在 DBFirst 场景中,在映射中添加 .HasIndex() 有啥好处?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 .net 核心上使用 ef 核心在 postgresql(db first)中映射枚举

一步步学习EF Core(1.DBFirst)

ElasticSearch为索引库添加静态映射报:Failed to parse mapping [properties]: Root mapping definition has unsupport

在 has_many 关联中添加数据

向 Laravel 中添加条件 has()

一:ORM关系对象映射(Object Relational Mapping,简称ORM)