Я действительно не уверен, как это сделать, так что вот мой лучший снимок. У меня есть таблица, в которой хранятся значения с помощью «TypeId» и фактического значения. «TypeId» отображает строку в справочной таблице, в которой содержится фактическое текстовое описание. При вставке данных в мою базу данных через BizTalk Server 2009 мне нужно выполнить поиск по каждому значению, предоставленному из входящего файла, чтобы получить его правильный TypeId, а затем заполнить исходную таблицу.Альтернатива запуску DB Lookup functoid через цикл?
Единственный способ, которым я вижу это, - это функционировать с помощью функции Look Look functoid, но поскольку эту функцию можно назвать буквально сотни раз для каждого входного файла, я не ожидаю удара по производительности, который я бы взял из этого , Кто-нибудь знает о другом способе выполнения этого поиска во время выполнения или, возможно, в том, как выполнить поиск из SQL только один раз, а затем BizTalk ссылается на некоторое представление таблицы в памяти?
EDIT: У меня была идея, но мне хотелось бы, чтобы кто-то из сообщества SO сказал мне, что это плохой, и если да, то почему. Вот он:
Я мог взять входящий документ и преобразовать прямо в XML, а затем передать полученный XMLDocument на внешнюю сборку .NET. Затем эта сборка может вставить таблицу поиска в виде словаря (или другого типа IEnumerable) и изменить исходный документ, добавив правильные значения TypeId вместо исходного дескриптора типа в исходном документе. Это теоретически позволило бы мне избежать накладных расходов большого количества поисков БД, заменив (теоретически) намного более низкие издержки на вызов внешней сборки.
Может ли кто-нибудь подумать о причине не использовать этот подход?
Не можете ли вы просто выполнить этот поиск в процедуре магазина, которую вы используете для записи значения? Просто передайте процедуру текстовое значение и пусть SP выполнит поиск соответствующего TypeId ...? Что мне не хватает? – Riri