سوف باستخدام كائن 'سبليست' المستمدة من التخلص منها.أوبن ويب () ' سبب أخطاء?
سؤال
سوف تستخدم أ 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()
يجعل مكالمة قاعدة بيانات في كل مرة ، ولكن إذا كان هناك الكثير من القوائم في شبكة الإنترنت كنت تحميل أقل كثيرا في الذاكرة.إنها مقايضة.