Минулого тижня я був здійснення послугами "розвивається" рішення для клієнта, який використовує каталогу бізнес-даних і SPQuery і зіткнулися з деякими труднощами при використанні SPQuery проти бібліотеку документів, що містять папки. Нижній рядок: призначити "Рекурсивний" для атрибута подання запиту.
Мій сценарій:
- У понеділок, Я завантаження документа та постачання деяких мета-дані.
- Наступного тижня, Я можу завантажити новий документ. Значна частина цього нового документа meta даних на основі документа, я завантажив в понеділок (що ми називаємо "головного документа").
- Ми створили web послуги фасаду, який забезпечує BDC зі зручним інтерфейсом до списку, так що користувачі можуть легко знайти той понеділок документа за допомогою пошуку в заголовку.
- Стовпець даних служби ПБД забезпечує дружній користувачеві інтерфейс. (Вони є моя спроба за допомогою каталогу бізнес-даних для більш дружній стовпця підстановки).
Остаточний служби ПБД фасад використовує запит як це робити підстановки:
// Використовується U2U інструмент для надання допомоги у створенні цього CAML запиту. oQuery.Query = "<Де>"; Якщо (titleFilter.Length > 0) oQuery.Query = " <І>"; oQuery.Query = " <І>" + " <Geq>" + " <FieldRef ім'я = "DocumentId" />" + " <Повязані = "Text">" + minId + "</Значення>" + " </Geq>" + " <Leq>" + " <FieldRef ім'я = "DocumentId" />" + " <Повязані = "Text">" + maxId + "</Значення>" + " </Leq>" + " </І>"; Якщо (titleFilter.Length > 0) oQuery.Query = " <Містить>" + " <FieldRef ім'я = "Title" />" + " <Повязані = "Text">" + titleFilter + "</Значення>" + " </Містить>" + " </І>"; oQuery.Query = "</Де>";
Під час початкового етапу розвитку, Це працював великий. Однак, ми ввели папки в каталог вирішити деякі проблеми і раптом, мій палітра каталогу бізнес-даних не дав жодних результатів. Я простежив це аж до того, що на SPQuery б ніколи не дав жодних результатів. Ми звикли папки в першу чергу дозволити декількох файлів з однаковими іменами для передавання, але з різними мета-дані. Коли файл передано, Ми створити папку на основі Ідентифікатор елемента списку а потім перемістіть файл там (Я писав про це Тут; у нас було змішані результати При такому підході, але загалом, він працює добре). Користувач не піклуються про папок і по суті, дійсно не розумію, що існують будь-які папки. Ми настроїли всі погляди на бібліотеки для відображення елементів безвідносно до папки.
Я вдарив цю проблему Удвічі кращий технічної реалізації розвивалися і вирішити її по-різному з кожним разом. В перший раз, Я не був за допомогою оператора МІСТИТЬ в запиті. Без МІСТИТЬ оператор, Я був в змозі вирішити цю проблему, вказавши погляд на contructor на SPQuery. Замість того щоб використовувати конструктор за промовчанням:
SPList oList = web.Списки["Документи"];
SPQuery oQuery = нові SPQuery();
Замість цього я використовував конструктор, що вказаний погляд:
SPList oList = web.Списки["Документи"];
SPQuery oQuery = нові SPQuery(oList.Views["Всі документи"]);
Що вирішена проблема, і я почав отримувати мої результати.
Потім я додав МІСТИТЬ оператор в суміші, і він зламав знову. Виявляється, що МІСТИТЬ оператор, наскільки я можу судити, не працює з тим, так само, як на простіше GEQ / LEQ операторів. Я зробив кілька пошуку і дізнався, що Перегляд атрибутів цей запит повинен бути встановлений на "Рекурсивний", як і в:
oQuery.ViewAttributes = "Сфера = "Recursive"";
Що вирішив проблему для МІСТИТЬ. Насправді, Це також вирішити мою вихідної задачі пошуку, і якщо я повинен був вказаний у рекурсивної атрибут в перший раз, Я б не зіткнулися питання знову.
Те, що подання на основі SPQuery працює для деяких операторів (GEQ/LEQ) а не інші (МІСТИТЬ), разом з тим, що KPI, схоже, не працювати на всіх з папку, що містить документ бібліотек приводить мене до думки, що SPQuery в деяких питаннях ортогональності.
Особлива подяка:
- Хороші люди в U2U і їх запиту інструмент.
- Майкл Хоффер великий "навчання на власному досвіді" повідомлення в блозі, Зауваження та відповіді.
</кінець>
http://www.batteryfast.co.uk/asus/w3v.htm ASUS w3v акумулятор,
http://www.batteryfast.co.uk/asus/w3000a.htm ASUS w3000a акумулятор,
http://www.batteryfast.co.uk/asus/w3000.htm ASUS w3000 акумулятор,
http://www.batteryfast.co.uk/asus/w3000v.htm ASUS w3000v акумулятор,
http://www.batteryfast.co.uk/asus/a31-s5.htm ASUS a31-s5 акумулятор,
http://www.batteryfast.co.uk/asus/a32-s5.htm ASUS a32-s5 акумулятор,
http://www.batteryfast.co.uk/asus/s52n.htm ASUS s52n акумулятор,
http://www.batteryfast.co.uk/asus/s5000.htm ASUS s5000 акумулятор,
http://www.batteryfast.co.uk/asus/s5200n.htm ASUS s5200n акумулятор,
http://www.batteryfast.co.uk/asus/s5n.htm ASUS s5n акумулятор,
http://www.batteryfast.co.uk/asus/90-naa1b1000.htm ASUS 90-naa1b1000 акумулятор,
http://www.batteryfast.co.uk/asus/s2691061.htm ASUS s2691061 акумулятор,
http://www.batteryfast.co.uk/asus/a42-v6.htm ASUS a42-v6 акумулятор,
http://www.batteryfast.co.uk/asus/a32-u5.htm ASUS a32-u5 акумулятор,
http://www.batteryfast.co.uk/asus/u5f.htm ASUS u5f акумулятор,
http://www.batteryfast.co.uk/asus/u5a.htm ASUS u5a акумулятор,
http://www.batteryfast.co.uk/asus/u5f.htm ASUS u5f акумулятор,
http://www.batteryfast.co.uk/asus/u5.htm ASUS u5 акумулятор,
http://www.batteryfast.co.uk/compaq/nw8000.htm Compaq nw8000 акумулятор,
http://www.batteryfast.co.uk/compaq/nc8000.htm Compaq nc8000 акумулятор,
http://www.batteryfast.co.uk/compaq/v1000.htm Compaq v1000 акумулятор,
http://www.batteryfast.co.uk/compaq/nc6000.htm Compaq nc6000 акумулятор,
http://www.batteryfast.co.uk/compaq/nx5000.htm Compaq nx5000 акумулятор,
http://www.batteryfast.co.uk/compaq/n600.htm Compaq n600 акумулятор,
http://www.batteryfast.co.uk/compaq/n600c.htm Compaq n600c акумулятор,
http://www.batteryfast.co.uk/compaq/n610c.htm Compaq n610c акумулятор,
http://www.batteryfast.co.uk/compaq/n610v.htm Compaq n610v акумулятор,
http://www.batteryfast.co.uk/compaq/n620c.htm Compaq n620c акумулятор,
http://www.batteryfast.co.uk/compaq/e500.htm Compaq e500 акумулятор,
http://www.batteryfast.co.uk/compaq/e500s.htm Compaq e500s акумулятор,
http://www.batteryfast.co.uk/compaq/v300.htm Compaq v300 акумулятор,
http://www.batteryfast.co.uk/compaq/v500.htm Compaq v500 акумулятор,
http://www.batteryfast.co.uk/compaq/pp2060.htm Compaq pp2060 акумулятор,
http://www.batteryfast.co.uk/compaq/nx9000.htm Compaq nx9000 акумулятор,
http://www.batteryfast.co.uk/compaq/nx9005.htm Compaq nx9005 акумулятор,
http://www.batteryfast.co.uk/compaq/nx9010.htm Compaq nx9010 акумулятор,
http://www.batteryfast.co.uk/compaq/nx9020.htm Compaq nx9020 акумулятор,
http://www.batteryfast.co.uk/compaq/n110.htm Compaq n110 акумулятор,
http://www.batteryfast.co.uk/compaq/n110s.htm Compaq n110s акумулятор,
http://www.batteryfast.co.uk/compaq/pp2101x.htm Compaq pp2101x акумулятор,
http://www.batteryfast.co.uk/compaq/presario-2100.htm Compaq presario 2100 акумулятор,
http://www.batteryfast.co.uk/compaq/ze4000.htm Compaq ze4000 акумулятор,
http://www.batteryfast.co.uk/compaq/f4809a.htm Compaq f4809a акумулятор,
http://www.batteryfast.co.uk/compaq/f4812a.htm Compaq f4812a акумулятор,
http://www.batteryfast.co.uk/dell/inspiron-700m.htm Dell inspiron 700 м акумулятор,
http://www.batteryfast.co.uk/dell/inspiron-710m.htm Dell inspiron m-710 акумулятор,
http://www.batteryfast.co.uk/dell/latitude-x200.htm Dell latitude x 200 акумулятор,
http://www.batteryfast.co.uk/dell/8u443.htm Dell 8u443 акумулятор,
http://www.batteryfast.co.uk/dell/312-0058.htm Dell 312-0058 акумулятор,
Ви знаєте, що StringBuilder найкращої практики для створення довгі рядки, право?