Conosco il metodo discusso qui:query LINQ compilata e DataLoadOptions ... con una svolta!
Solving common problems with Compiled Queries in Linq to Sql for high demand ASP.NET websites
... ma questo non funziona per la mia situazione come ho ottenere un:
"Impostazione delle opzioni di caricamento non è consentito dopo i risultati hanno stato restituito da una query. "
Sto usando gli script Codesmith PLINQO per generare entità e il codice manager, e il codice manager guarda qualcosa di simile:
public partial class SearchManager
{
#region Query
// A private class for lazy loading static compiled queries.
private static partial class Query
{
internal static readonly Func<MyDataContext,IOrderedQueryable<Search>>
GetAll = CompiledQuery.Compile(
(MyDataContext db) =>
from s in db.Search
orderby s.Name
select s);
}
#endregion
public IQueryable<Search> GetAll()
{
return Query.GetAll(Context);
}
}
prima ho provato cadere un DataLoadOptions statici nella classe Searchmanager in questo modo:
public static readonly DataLoadOptions MyOptions =
(new Func<DataLoadOptions>(() =>
{
var option = new DataLoadOptions();
option.LoadWith<Search>(x => x.Rule);
return option;
}))();
... poi fornire al contesto nel metodo GetAll come:
public IQueryable<Search> GetAll()
{
Context.LoadOptions = MyOptions;
return Query.GetAll(Context);
}
... e questo mi ha dato l'errore che ho notato sopra. È perché la query è già stata compilata e quindi non è possibile aggiungere "extra" a DataLoadOptions? In tal caso, come sarebbe possibile applicare le DataLoadOptions prima che la query fosse compilata?
controllo la risposta distaccato e farlo accettare se hai le informazioni che desidera –