Question

je lie tous GridViews, etc. DetailViews sur ma page en utilisant un ObjectDataSource (à moins qu'il n'était pas possible de le faire). Récemment, j'ai commencé à lier tous mes contols programatically. Je trouve cela beaucoup plus propre et plus facile, même si certains peuvent être en désaccord.

La liaison avec un ObjectDataSource a évidemment il des avantages et des inconvénients, comme le fait de le faire programatically.

Say I se lient à un GridView par programme (par exemple GridView1.DataSource = SomeList), lorsque je change la page sur le GridView, je dois également coder ce produit. Chaque fois que la page change, je dois appeler GridView1.DataSource = SomeList à nouveau. De toute évidence, avec un ObjectDataSource Je ne ai pas besoin de le faire. Je tiens normalement mon objet SomeList dans le ViewState quand je change la page Je ne ai pas besoin de frapper chaque fois que la base de données.

Ma question est: Est-ce comment fonctionne le ObjectDataSource? Est-il stocker des données de la TI dans ViewState et non frappé à nouveau la base de données à moins que vous appelez la méthode .Select? J'aime essayer d'obtenir les meilleures performances de mes applications et la base de données frappé plusieurs fois que possible, mais je ne sais pas vraiment l'idée de stocker une liste énorme dans le ViewState. Existe-t-il une meilleure façon de le faire? Est mise en cache par utilisateur une bonne idée (ou possible)? Dois-je frapper juste la base de données à chaque fois au lieu de stocker ma liste énorme dans le ViewState? Est-il parfois préférable de frapper la base de données que d'utiliser ViewState?

Était-ce utile?

La solution

  

Est-il stocke ses données dans le ViewState et non frappé à nouveau la base de données à moins que vous appelez la méthode .Choisir?

Non ce ne sauvegarde les données dans ViewState . Dans l'état d'affichage GridView et d'autres listes similaires, enregistre le statut général, par exemple, la colonne de tri, la page, le total des pages, l'état de contrôle, mais pas les données.

  

est la mise en cache par utilisateur une bonne idée

La mise en cache par utilisateur sur le côté serveur n'est pas si bonne idée, sauf si la mise en cache est la dernière pour quelques minutes seulement et / ou les données que vous allez cache est très faible. Si vous mettez en cache par utilisateur grande quantité de données pour longtemps, ils vont grandir trop particulier si un utilisateur démarre lire un grand nombre de pages, à la fin vous avez le même problème.

Maintenant, vous devez montrer une grande quantité de données qui proviennent de la relation de plusieurs tables, alors il est peut-être préférable de mettre en cache la relation complète des tableaux à « une table à plat ».

  

Dois-je frapper juste la base de données à chaque fois au lieu de stocker ma liste énorme dans le ViewState?

Ceci est dépend aussi de la façon dont vous avez la conception rapide de la lecture de vos données. Pour moi est préférable de garder la petite ViewState et garder là seulement des informations que vous avez besoin de faire des actions sur votre page, et pas de données.

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