Я использую Entity Framework CTP 5 с «только кодом» (с SQL Server 2008). У меня есть сущность, возвращенная из DbContext, из которой я затем получаю доступ к дочерней коллекции и выбираю из нее один элемент. Вот мой оператор LINQ:
Question currentQuestion = currentTopic.Questions.SingleOrDefault(x => x.IsCurrent);
Это производит следующий SQL:
SELECT
[Extent1].[Id] AS [Id],
[Extent1].[CreatedAt] AS [CreatedAt],
[Extent1].[IsCurrent] AS [IsCurrent],
[Extent1].[Xml] AS [Xml],
[Extent1].[TopicId] AS [TopicId]
FROM [dbo].[Questions] AS [Extent1]
WHERE [Extent1].[SessionId] = 24
Мое ограничение «IsCurrent» вообще не упоминается. IsCurrent — это битовое поле в моей базе данных.
Кто-нибудь может объяснить, почему это так? Это вызывает огромный удар по производительности.