17.09.2016, 13:29 | #1 |
Участник
|
Вопрос знатокам
А вот вопрос знатокам
Есть плагин пост-апдейт. В плагине подгружен референс на стороннюю библиотеку. В плагине соответственно црм-сервис реализован через IOrganizationService. В библиотеке же через OrganizationService. Триггер плагина вызывает некий метод из библиотеки, который в свою очередь вызывает OrganizationService.Create. И вот тут на выходе мы получаем исключение SQL Timeout, вместо новой записи. Как только в библиотеке реализация сервиса была изменена на IOrganizationService, проблема ушла. Других плагинов или событий в данном сценарии нет. Црм15. Почему возникла ситуация с исключением? Заранее благодарю за ответ. Зы: небольшая ремарка к сценарию. В событии Create также создается связь EntityRefernce с сущностью на которой отработал плагин. Если этой связи не делать, то исключения тоже не возникало. Зыы: еще одна ремарка. В плагине прописано строгое ограничение context.Depth < 2 Последний раз редактировалось magicandy; 17.09.2016 в 13:36. |
|
19.09.2016, 09:51 | #2 |
Чайный пьяница
|
Скорее всего дело в транзакциях. Когда вы используете IOrganizationService - все ваши действия выполняются в рамках той же транзации. Как только вы начинаете использовать OrganizationService - при выполнении операций открывается новая транзакция, а записи, с которыми вы пытаетесь работать залочены транзакцией открытой плагином. Отсюда и SQL Timeout.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: magicandy (1). |
21.09.2016, 11:29 | #3 |
Участник
|
Звучит весьма убедительно. Спасибо.
|
|