폐기된 `.OpenWeb()`에서 파생된 `SPList` 개체를 사용하면 오류가 발생합니까?

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

  •  10-12-2019
  •  | 
  •  

문제

다음을 사용할 것입니다. SPList 폐기된 개체에서 파생된 개체 .OpenWeb() 오류가 발생합니까?

SPList list = null;

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

SPListItemCollection items = list.Items;
도움이 되었습니까?

해결책

아니,거기에 되지 않습니다 오류가 있습니다.나는 일반적으로 사용하는 이 디자인 패턴을 계속 나 using 블록 작습니다.

SPList list;

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

SPListItemCollection items = list.Items;

업데이트하는 경우 SPListItem 는 방식으로 필요 SPWeb.AllowUnsafeUpdates = true; 하지만,당신을 유지하기 위해 필요한 참조 SPWeb (IE:모든 일에 using 니다.)

에 대한 자세한 내용을 때 필요한 설정 AllowUnsafeUpdates 속성을 참조하십시오 Hristo Pavlov's 무엇에 대해 알아야 할 AllowUnsafeUpdates.그것은 최고의 설명을 발견했다.

내가 이렇게 많이 필요 없이 많은 중첩에서 블록 내 코드입니다.그것은 많은 청소기입니다.당신 목록을 검색하의 메모리에 저장됩니다.같은 사실을 사용하는 경우에만 목록에 당신의 using 니다.뭔가가 들어가면 변경 사이의 시간을 당신 목록을 로드하고 당신이 시간을 요청하는 값에서(항목에 대한 인스턴스),값을 얻은 값이 존재하는 경우드 목록에서 첫 번째 장소입니다.

이것은 또한 왜 너만을 받고 몇 가지 목록을 사용해야 합니다 SPWeb.GetList()SPWeb.Lists[index]. SPWeb.Lists 모두 로드 목록에서 웹서 첫 번째 호출합니다. GetList() 데이터베이스를 호출 시간이 많을 경우의 목록에서 웹서 당신은 로딩을 많이 적은 메모리로.그것은습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top