Question

Quand est-ce que "l'unité de travail" est n'est plus une "unité"? Quel scénario est meilleur sur les ressources? Le premier crée une connexion, tandis que le second en crée 4.

using (DataContext dc=new DataContext) 
{
  var orders= from o in dc.orders 
              select ( new Product {  property a= from a in ..join... select x, 
                                      property b= from b in ..join... select y,
                                      property c= from c in ..join... select z.}
                      )
}

OU

using (DataContext dc=new DataContext) 
{
  var orders= from o in dc.orders 
              select ( new Product {  property a = GetPropertyA(), 
                                      property b = GetPropertyB(),
                                      property c = GetPropertyC()}
                      )
}
Était-ce utile?

La solution

Si vous utilisez LINQ si vous ajoutez une entité à une autre et qu’ils utilisent un contexte de données différent, vous obtiendrez une erreur. Je suggérerais de garder le même contexte de données pour chaque unité de travail que vous utilisez. Vous pouvez facilement identifier l'unité de travail que vous traitez en utilisant le modèle de référentiel pour écrire vos classes d'accès aux données. Si vous ne connaissez pas bien le modèle de référentiel, consultez cette entrée

Autres conseils

En règle générale, moins il y a d'allers-retours dans votre base de données, mieux c'est. Cependant, dans les applications à grande échelle, nous rendons souvent nos bases de données de plus en plus «stupides». Nous finissons donc par ne faire aucune jointure. Nous n'attachons donc pas de ressources en CPU et en mémoire sur le serveur de base de données SQL. Cela dépend vraiment des ressources que vous trouvez les plus rares. Si votre serveur SQL dispose de beaucoup de ressources, faites la jointure ici, sinon il serait préférable de le retirer séparément. Avez-vous examiné les résultats dans le profileur SQL? Êtes-vous sûr qu'il s'agit de 4 connexions ou de 4 appels séparés?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top