Existe-t-il un conflit lors de l'utilisation du cache de données et du chargement différé?

StackOverflow https://stackoverflow.com/questions/487669

  •  20-08-2019
  •  | 
  •  

Question

Si je prévois d'utiliser la mise en cache des données, dois-je m'inquiéter des conflits lorsque j'utilise également un chargement différé? Il semble qu'avec linq je perds le contrôle de mes données.

Était-ce utile?

La solution

LinqToSql et EntityFramework fournissent les deux fonctionnalités (chargement différé et mise en cache des données).

Par exemple, si vous chargez initialement un client, ce dernier sera mis en cache et si vous le redemandez, vous obtiendrez la même instance.

Si vous ne chargez pas les commandes d'un client lors de son chargement initial, la propriété Orders de cette instance de client sera dans un état non chargé. Lorsque vous chargez ces commandes, les instances de commande sont disponibles via cette propriété.

  • LinqToSql chargera la propriété lors de sa première utilisation.
  • EntityFramework chargera la propriété lorsque cela lui sera demandé (à l'aide de la méthode Load).

Dans les deux technologies, le contexte est la chose qui effectue la mise en cache ... donc, si vous utilisez plusieurs instances de contexte, vous pouvez observer différentes instances de clients qui représentent réellement le même client.

Répondez à vos questions dans les commentaires. Je parlerai de LinqToSql, mais cela devrait également fonctionner dans EntityFramework.

  

si je ferme le chargement différé, je le prends, la mise en cache des données fonctionnera toujours?

Oui, cela fonctionnera. Cependant, ils ne sont pas totalement indépendants.

  

le vidage du cache de données dépend-il de l’évolution des données et de l’heure?

Il n'y a pas de vidage ni de réinitialisation du cache. Si vous voulez un nouveau cache, vous devez créer un nouveau DataContext. Chaque instance de DataContext a son propre cache.

  • Il existe un moyen d'extraire le cache avec les modifications de la base de données, aussi appelé Actualiser .
  • Il n'y a aucun moyen de transférer les modifications de la base de données vers le cache.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top