J'ai une requête qui ressemble à ceci:Optimisation d'une requête LINQ to SQL
public IList<Post> FetchLatestOrders(int pageIndex, int recordCount)
{
DatabaseDataContext db = new DatabaseDataContext();
return (from o in db.Orders
orderby o.CreatedDate descending
select o)
.Skip(pageIndex * recordCount)
.Take(recordCount)
.ToList();
}
J'ai besoin d'imprimer les informations de l'ordre et l'utilisateur qui l'a créé:
foreach (var o in FetchLatestOrders(0, 10))
{
Console.WriteLine("{0} {1}", o.Code, o.Customer.Name);
}
Ce produit une requête SQL pour amener les commandes et une requête pour chaque commande pour amener le client. Est-il possible d'optimiser la requête pour qu'elle apporte les commandes et son client dans une requête SQL?
Merci
UDPATE: Par suggestion Sirrocco j'ai changé la requête comme ceci et cela fonctionne. Une seule requête de sélection est générée:
public IList<Post> FetchLatestOrders(int pageIndex, int recordCount)
{
var options = new DataLoadOptions();
options.LoadWith<Post>(o => o.Customer);
using (var db = new DatabaseDataContext())
{
db.LoadOptions = options;
return (from o in db.Orders
orderby o.CreatedDate descending
select o)
.Skip(pageIndex * recordCount)
.Take(recordCount)
.ToList();
}
}
Merci sirrocco.
Wow, c'était génial. J'ai mis en œuvre ceci et le temps de requête réduit de 25 secondes à 1,5 .. grande info merci. – BastanteCaro
Pourriez-vous s'il vous plaît répondre http://stackoverflow.com/questions/11262785/optimizing-repositorys-submitchanges-method? – Lijo