我在 C# 中从实体框架调用 SQL Server 10,并希望在请求中获得查询提示。数据库具有在 Management Studio 中运行的 SQL 正常运行的索引,但是当使用 Visual Studio 中的实体框架从 C# 调用命令时,查询计划程序在已经存在索引时选择完全扫描。
我正在创建动态谓词来请求以下形式的数据:
data.attributeText = data.vegaDB.attributeText.AsExpandable().Where(parentPredicate.Compile()).ToList();
whereparentPredicate
是动态生成的,相当于:
(parentID = p1) AND (attributeName = 'name OR ... ')
SQL Server 查询计划从中生成:
SELECT
[Extent1].[attributeID] AS [attributeID],
[Extent1].[parentID] AS [parentID],
[Extent1].[typeID] AS [typeID],
[Extent1].[attributeName] AS [attributeName],
[Extent1].[attributeData] AS [attributeData]
FROM [dbo].[attributeText] AS [Extent1]
因此,用在初始 c# 调用中执行查询提示的一些额外命令替换直接 sql 调用使用[Extent1]
的 index[IX_parentID]
似乎是解决方案。我环顾四周,但还没有成功。知道如何提出问题吗?
你认为这是正确的解决方案吗?