2010-09-22 7 views
0

Commençons par expliquer mon cas d'utilisation:Comment faire pour supprimer ou restaurer des DataContext.DataLoadOptions?

Dites qu'il existe une base de données "Cars". Dans cette base de données, chaque ligne peut avoir un Make, un Model, un EngineType, etc. J'ai une page qui est essentiellement une vue d'un seul enregistrement "Car", affichant ses différentes statistiques. Dans cette page, j'ai un contrôle utilisateur qui calcule et déploie diverses statistiques MPG basées sur l'enregistrement "Car". Le contrôle utilisateur est passé l'enregistrement "Car" via une propriété, puis l'utilise en interne pour ses calculs.

intérieur que le contrôle de l'utilisateur, quelque chose comme cela se produit:

private void DataBindGrid() 
{ 
    gridView.DataSource = this.CarRecord.GetMPGStats(); 
} 

interne à "CarRecord", est un LINQ to SQL requête, en utilisant le contexte de données de CarRecord. Aux fins de ce calcul, il serait plus efficace de le faire:

private void DataBindGrid() 
{ 
    DataLoadOptions dlo = new DataLoadOptions(); 

    dlo.LoadWith<Car>(c => c.Engine); 

    this.CarRecord.DataContext.LoadOptions = dlo; 

    gridView.DataSource = this.CarRecord.GetMPGStats(); 
} 

Aux fins de cet exemple, ignorer si oui ou non cela peut être une mauvaise conception pour un contrôle utilisateur passe dans un enregistrement & datacontext .

Voici les questions que je vois:

  • La page peut avoir défini ses propres options de chargement avant de passer l'enregistrement au contrôle de l'utilisateur, ce qui entraîne une requête inefficace.
  • La page peut ne pas vouloir les nouveaux paramètres spécifiés par le contrôle de l'utilisateur lorsqu'il continue à utiliser l'enregistrement de voiture lui-même.

J'ai donc deux questions:

  1. Quelle est la meilleure façon de les LoadOptions "claires"? Il suffit de définir DataContext.LoadOptions = new DataLoadOptions(); ou = null;?
  2. Est-il possible de définir une sorte de LoadOptions temporaire qui n'affecte qu'une certaine opération avant de revenir à ce qu'elle était auparavant?

Merci d'avance.

Répondre

1

Les options de chargement de données doivent toujours être définies avant l'exécution de la première requête. Une fois qu'une requête est exécutée, vous ne pouvez rien faire avec eux.

Questions connexes