如何在 Entity Framework db-first 项目中添加非聚集索引?
Posted
技术标签:
【中文标题】如何在 Entity Framework db-first 项目中添加非聚集索引?【英文标题】:How to add nonclustered indexes in Entity Framework db-first project? 【发布时间】:2022-01-06 03:30:02 【问题描述】:我在 SQL Server 中有一个表,其中包含一些列的自定义非聚集索引。而且我还有一个版本低于这个项目。
.Net Framework 4.6.2 实体框架 6.4.4我在现有数据库的基础上向项目添加了一个实体数据模型(使用数据库优先方法)。
虽然SELECT
查询在数据库中快速返回,但相同的查询在项目中出现超时错误。而且我认为EF无法添加
项目的列索引。我在项目中搜索了索引名称,
但是项目中没有任何关于索引的代码。
那么,如何向我的数据库优先模型添加索引?
【问题讨论】:
索引未添加到 EF - 如果有的话,它们将添加到 SQL Server 数据库.....来自 EF ,你必须使用迁移来做这样的事情(改变/修改数据库的结构) 您可以只添加一个迁移并在迁移中执行任意 SQL,包括“创建索引...”。 真的不清楚你在问什么,主要是因为你似乎对索引是什么以及它们在哪里发挥作用有错误的认识。坚持问题:性能差异。您是否在执行完全与 EF 相同的 SQL 查询?Database first
表示您首先创建数据库,包括所有索引。 there isn't any code about indexes in the project.
不会有。毕竟,您不会在 SQL 查询中编写任何特定于索引的代码。
the same query gets a timeout error in the project
你的代码是做什么的?有多少数据?
【参考方案1】:
那么,如何向我的数据库优先模型添加索引?
“数据库优先”表示您首先将设计更改应用到数据库,然后再将任何更改应用到 EF 模型。
因此,您只需使用Visual Studio 或SSMS 在 SQL Server 中创建索引,并且由于添加索引时不需要更改 EF 模型,因此您已完成。
【讨论】:
以上是关于如何在 Entity Framework db-first 项目中添加非聚集索引?的主要内容,如果未能解决你的问题,请参考以下文章
C# Entity-Framework:如何在模型对象上组合 .Find 和 .Include?
如何在 Entity Framework Core 中运行存储过程?
如何在 Entity Framework Core 中运行存储过程?