Ich möchte IQueryable<>
Ergebnis erhalten, wenn gespeicherte Prozedur ausgeführt wird.IQueryable <> aus gespeicherter Prozedur (Entitätsframework)
ist hier Frieden Code, der gut funktioniert:
IQueryable<SomeEntitiy> someEntities;
var globbalyFilteredSomeEntities =
from se in m_Entities.SomeEntitiy
where
se.GlobalFilter == 1234
select se;
Ich kann diese globale Filter anzuwenden, verwenden und die spätere Verwendung Ergebnis in einer solchen Art und Weise
result = globbalyFilteredSomeEntities
.OrderByDescending(se => se.CreationDate)
.Skip(500)
.Take(10);
Was will ich - Verwende einige gespeicherte Prozeduren im globalen Filter.
Ich habe versucht:
Add gespeicherte Prozedur m_Entities
, aber es gibt IEnumerable<>
und führt sp sofort:
var globbalyFilteredSomeEntities =
from se in m_Entities.SomeEntitiyStoredProcedure(1234);
Materialise Abfrage EFExtensions Bibliothek, aber es ist IEnumerable<>
.
Wenn ich AsQueryable()
und OrderBy()
, Skip()
, Take()
und danach ToList()
diese Abfrage auszuführen -
ich Ausnahme, dass DataReader
offen ist und ich brauche um es zu schließen ersten (nicht Fehler ein - es ist in russischen).
var globbalyFilteredSomeEntities =
m_Entities.CreateStoreCommand("exec SomeEntitiyStoredProcedure(1234)")
.Materialize<SomeEntitiy>();
//.AsQueryable()
//.OrderByDescending(se => se.CreationDate)
//.Skip(500)
//.Take(10)
//.ToList();
auch nur das Überspringen .AsQueryable()
ist nicht hilfreich - gleiche Ausnahme.
Wenn ich ToList()
Abfrage ausführt,
, aber es ist zu teuer, Abfrage ohne Skip()
, Take()
auszuführen.
Ist das EF 4? Wenn ja, benutze 'ExecuteStoreQuery', und dann brauchst du' Materialize' nicht. –
Nein, es ist EF 1, aber wenn 'ExecuteStoreQuery' mein Problem löst, werde ich in Erwägung ziehen, zu EF4 zu wechseln. Kannst du Links zu einigen speziellen Artikeln darüber teilen (falls du solche hast). –
Ich sah http: // stackoverflow.com/questions/2201369/entity-framework-objectcontext-executestorequery-products-detached-objects und es wird angegeben, dass 'ExecuteStoreQuery' 'ObjectResult' collection zurückgibt - genau wie' m_Entities.SomeEntiyStoredProcedure (1234); '. So scheint 'ExecuteStoreQuery' mein Problem nicht zu lösen. –