Okay Ho bisogno di un controllo di integrità qui ...Quando viene eseguita una query compilata che restituisce un esecuzione IQueryable?
Ho compilato una query che restituisce un IQueryable quando eseguito.
Su quale riga (i) deve essere eseguita effettivamente la query sul database nel seguente esempio?
101 IQueryable<T> results = MyCompiledQuery(MyDataContext);
102 List<T> final = (from t in result
103 where t.ID > 5
104 select t).ToList<T>();
Ecco come io definisco la query compilata
public static Func<MyDataContext, IQueryable<Widget>> MyCompiledQuery=
CompiledQuery.Compile<MyDataContext, IQueryable<Widget>>(
(MyDataContext db) =>
from w in db.Widgets
where ((w.Type == WidgetType.Atype || //Widget.Atype is a Linq to Sql object, that I've defined statically
w.Type == WidgetType.Btype || //See above comment
w.Type == WidgetType.Ctype) && //See above comment
w.Location == WidgetLocation.Domestic) //Samething applies here
select euc);
PER DISCUSSIONE ULTERIORI fare riferimento a: "Sulla linea 104, quando si fa la conversione ToList" LINQ to SQL compiled queries and when they execute
Non c'è alcuna istruzione alla riga 104. Prova a impostare un punto di interruzione ... – Guffa
Penso che questa query venga effettivamente eseguita sulla riga 101 (anche prima di chiamare ToList). – lahsrah
No. La riga 101 crea una query. La query viene eseguita quando vengono recuperati i dati effettivi. – alex