2016-05-24 6 views
0

У меня есть следующий блок кода, подключающийся к нашей базе данных HP TRIM, и пытаюсь вытащить все содержимое конкретного контейнера.Получение содержимого контейнера HP TRIM в C#

using HP.HPTRIM.SDK; 

Database db = new Database(); 
db.WorkgroupServerName = ConfigurationManager.AppSettings["TrimWorkgroup"]; 
db.Id = ConfigurationManager.AppSettings["TrimDBID"]; 
db.WorkgroupServerPort = Int32.Parse(ConfigurationManager.AppSettings["TrimPort"]); 

TrimMainObjectSearch Contents = new TrimMainObjectSearch(db, baseObjectTypes.Record); 
Contents.SetSearchString("container:" + ContainerNum); 

Глядя на то, что DOCO я мог бы найти, есть только кажется, ссылки, чтобы использовать строку поиска на основе, однако есть проблема:

Строка поиска на основе такого рода принимает возраст. Около 25 секунд на контейнер, который слишком длинный. Использование «текстового редактора поиска» внутри HP TRIM [7.3.4.5739] занимает столь же большое количество времени, однако, используя метод «логического поиска», и выбрав «Содержимый внутри» и вводя тот же номер контейнера, результаты вернулся в течение секунды.

Итак, мой вопрос после всего этого, есть ли способ, которым я могу выполнить логический поиск «Содержится внутри» в C#?

ответ

0

Как всегда идет, я был озадачен, пока я не наткнулся на этот документ: http://community.hpe.com/hpeb/attachments/hpeb/itrc-1015/11992/1/TRIM7.31_.NETSDK.pdf, который отметил метод:

Contents.SelectThoseWithin(CHR); 

Это работает, так как у меня уже есть все контейнеры мне нужно. Это возвращается через несколько миллисекунд.

1

Вы также можете использовать оператор = вместо : в соответствии с вашими критериями. container: будет соответствовать в любой точке строки, в то время как container= выполнит точное совпадение и для поля идентификатора, подобного этому, будет намного быстрее.

Смежные вопросы