L'utilisation d'un objet `SPList` dérivé d'un `.OpenWeb()` supprimé provoquera-t-il des erreurs ?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/54486

  •  10-12-2019
  •  | 
  •  

Question

Utilisera-t-il un SPList objet dérivé d'un objet éliminé .OpenWeb() provoquer des erreurs ?

SPList list = null;

using (SPWeb web = SPContext.Current.Site.OpenWeb("/myweb")){
    list = web.Lists["Awesome Name"];
}

SPListItemCollection items = list.Items;
Était-ce utile?

La solution

Non, il n'y aura pas d'erreur.J'utilise couramment ce modèle de conception pour garder mon using blocs petits.

SPList list;

using (SPWeb web = SPContext.Current.Site.OpenWeb("myweb"))
{
    list = web.GetList("/myweb/Lists/Awesome Name");
}

SPListItemCollection items = list.Items;

Si vous mettez à jour un SPListItem d'une manière qui nécessite SPWeb.AllowUnsafeUpdates = true; cependant, vous devrez conserver la référence au SPWeb (C'EST À DIRE:faire tout le travail dans le using bloc.)

Pour plus d'informations sur le moment où vous devrez définir le AllowUnsafeUpdates propriété, voir celui de Hristo Pavlov Ce que vous devez savoir sur AllowUnsafeUpdates.C'est la meilleure explication que j'ai trouvée à ce sujet.

Je fais cela beaucoup donc je n'ai pas autant de blocs imbriqués dans mon code.Cela le rend beaucoup plus propre.Une fois que vous récupérez une liste, elle est stockée en mémoire.Il en va de même si vous utilisez la liste uniquement dans votre using bloc.Si quelque chose change entre le moment où vous chargez la liste et le moment où vous demandez une valeur (à partir d'un élément par exemple), la valeur que vous obtenez est la valeur qui était présente lorsque vous avez chargé la liste en premier lieu.

C'est aussi pourquoi si vous n'obtenez que quelques listes, vous devriez utiliser SPWeb.GetList() au lieu de SPWeb.Lists[index]. SPWeb.Lists charge toutes les listes du Web au premier appel. GetList() effectue un appel à la base de données à chaque fois, mais s'il y a beaucoup de listes sur le Web, vous en chargez beaucoup moins en mémoire.C'est un compromis.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top