سوف باستخدام كائن 'سبليست' المستمدة من التخلص منها.أوبن ويب () ' سبب أخطاء?

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 (أي:القيام بكل عمل في using منع.)

لمزيد من المعلومات حول متى ستحتاج إلى تعيين AllowUnsafeUpdates الملكية ، انظر خريستو بافلوف ما تحتاج لمعرفته حول سماحالتحديثات غير الآمنة.إنه أفضل تفسير وجدته حول هذا الموضوع.

أفعل هذا كثيرا لذلك ليس لدي الكثير من الكتل المتداخلة في الكود الخاص بي.يجعلها أنظف كثيرا.بمجرد استرداد قائمة يتم تخزينها في الذاكرة.وينطبق الشيء نفسه إذا كنت تستخدم القائمة فقط داخل الخاص بك using منع.إذا تم تغيير شيء ما بين وقت تحميل القائمة والوقت الذي تطلب فيه قيمة (من عنصر على سبيل المثال) ، فإن القيمة التي تحصل عليها هي القيمة التي كانت موجودة عند تحميل القائمة في المقام الأول.

هذا هو السبب أيضا إذا كنت تحصل فقط على قائمتين يجب عليك استخدامهما SPWeb.GetList() بدلا من SPWeb.Lists[index]. SPWeb.Lists يقوم بتحميل جميع القوائم في الويب في المكالمة الأولى. GetList() يجعل مكالمة قاعدة بيانات في كل مرة ، ولكن إذا كان هناك الكثير من القوائم في شبكة الإنترنت كنت تحميل أقل كثيرا في الذاكرة.إنها مقايضة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى sharepoint.stackexchange
scroll top