EF Core DB优先-我需要索引定义吗



我使用的是EF Core(3.1,如果这很重要的话(和DB优先的方法。不久前,我使用Scaffold DbContext命令生成了模型,在生成的上下文文件中有许多索引定义,例如:entity.HasIndex(e => new { e.ItemType, e.ItemID });

由于我们最近进行了一些索引更新,我想知道——我真的需要更新模型中所有相关的索引定义吗?我需要它们吗?它们对EF的性能或代码的运行方式有任何影响吗?或者我可以删除它们,而不用担心实际DB中的任何更新吗?

提前感谢

数据库优先方法中,与

代码优先我的意思是,您总是根据数据库对象和数据库中所做的更改来更新模型。

在您的情况下,我建议您在visual studio中使用数据库项目,以便通过使用Source control来控制数据库。以下文章可能会对您有所帮助:

创建您的第一个Visual Studio数据库项目

在我看来,将数据库更改保留在同一个应用程序项目中并不重要。将所有数据库对象保留在另一个数据库项目中,并仅将数据库模型用于应用程序模型。您可以构建它,然后在SQL Server上部署数据库项目。


索引不会直接影响EF功能,但数据库性能会影响其输出"索引是与表或视图相关联的磁盘结构,可加快从表或视图中检索行的速度">

描述的聚集索引和非聚集索引