0
データベースへのクエリに問題があります。 私は、以下のコードを試してみると、75ミリ秒で動作し、空のリストを返します。全て大丈夫。IQueryableのタイムアウトが期限切れです
var test1 = unit
.PersonQualities.GetAll()
.Where(qp => qp.QualityId == qualityId && qp.PersonId == targetPersonId)
.ToList();
しかし、私はこれを使用する場合、それは30秒とリターンのタイムアウト期限切れの例外を動作します:
var test2 = unit
.PersonQualities.GetAll()
.FirstOrDefault(qp => qp.QualityId == qualityId && qp.PersonId == targetPersonId);
マイGETALL方法:
public virtual IQueryable<T> GetAll()
{
return Entities.AsQueryable();
}
この問題が発生した理由を説明してください。そして、私はこの問題を解決するために何ができますか?ありがとう。 P.P.私はSQL Server 2016 Developerを使用しています。どちらのクエリもSSMSで動作します。プロファイラで
FirstOrDefaultクエリ:
exec sp_executesql N'SELECT TOP (1)
[Extent1].[Id] AS [Id],
[Extent1].[Value] AS [Value],
[Extent1].[Percent] AS [Percent],
[Extent1].[IsLocked] AS [IsLocked],
[Extent1].[PersonId] AS [PersonId],
[Extent1].[QualityId] AS [QualityId]
FROM [dbo].[PersonQuality] AS [Extent1]
WHERE ([Extent1].[QualityId] = @p__linq__0) AND ([Extent1].[PersonId] = @p__linq__1)',N'@p__linq__0 bigint,@p__linq__1 bigint',@p__linq__0=110207,@p__linq__1=43257113
SingleOrDefault:
exec sp_executesql N'SELECT TOP (2)
[Extent1].[Id] AS [Id],
[Extent1].[Value] AS [Value],
[Extent1].[Percent] AS [Percent],
[Extent1].[IsLocked] AS [IsLocked],
[Extent1].[PersonId] AS [PersonId],
[Extent1].[QualityId] AS [QualityId]
FROM [dbo].[PersonQuality] AS [Extent1]
WHERE ([Extent1].[QualityId] = @p__linq__0) AND ([Extent1].[PersonId] = @p__linq__1)',N'@p__linq__0 bigint,@p__linq__1 bigint',@p__linq__0=110207,@p__linq__1=43257113
データベースサーバーで直接クエリを実行しようとしましたか? – Jehof
@Jehofいいえ、現時点ではできません( – OldUnion
SingleOrDefaultはうまく動作します:\ – OldUnion