Poniższy kod:Pomiń i podejmij: Skuteczne podejście do LIMITU PRZESUNIĘCIE w EF 4.1?
using (var db = new Entities())
{
db.Blogs.First().Posts.Skip(10).Take(5).ToList();
}
wygeneruje następujący SQL:
-- statement #1
SELECT TOP (1) [c].[Id] AS [Id],
[c].[Title] AS [Title],
[c].[Subtitle] AS [Subtitle],
[c].[AllowsComments] AS [AllowsComments],
[c].[CreatedAt] AS [CreatedAt]
FROM [dbo].[Blogs] AS [c]
-- statement #2
SELECT [Extent1].[Id] AS [Id],
[Extent1].[Title] AS [Title],
[Extent1].[Text] AS [Text],
[Extent1].[PostedAt] AS [PostedAt],
[Extent1].[BlogId] AS [BlogId],
[Extent1].[UserId] AS [UserId]
FROM [dbo].[Posts] AS [Extent1]
WHERE [Extent1].[BlogId] = 1 /* @EntityKeyValue1 */
(od http://ayende.com/blog/4351/nhibernate-vs-entity-framework-4-0)
NB Skip i Take nie zostały przetłumaczone na SQL powodując Wszystkie Posty z bloga ładowanego z bazy danych, zamiast tylko 5, których potrzebujemy.
Wydaje się to niebezpiecznie, potwornie nieefektywne. Niewiarygodne, co daje?
Dzięki za odpowiedź, która jest pomocna, ale szukałem rozwiązania wolnego od EQL. Powinienem to stwierdzić w pytaniu. W każdym razie dzięki. – Tom