Отладка серверного кода в действии "Задание- сценарий".
Коллеги, приветствую.
Ознакомился со статьей Отладка серверного кода, пытаюсь начать отладку некоторого действия бизнес- процесса.
Например, у меня есть некоторое задание- сценарий, где я пишу -
Select selectQuery = new Select(UserConnection)
.Column("Id")
.Column("Name")
.From("Contact");
// Выполнение запроса к базе данных и получение результирующего набора данных.
using (DBExecutor dbExecutor = UserConnection.EnsureDBConnection())
{
using (IDataReader reader = selectQuery.ExecuteReader(dbExecutor))
{
while (reader.Read())
{
// Обработка результатов запроса.
}
}
}
return true;
(Пример - Использование EntitySchemaQuery для построения запросов к базе данных)
Публикую, компилирую сборку и получаю в итоге -
При попытке компиляции возникло: ошибок - 3, предупреждений - 2
В ходе кодогенерации компиляция не удалась и файлов символов, соответственно, нет - точки останова не срабатывают:
No symbols have been loaded for this document.
Сгенерированный код, который я пытаюсь отладить в Visual Studio -
Нужно- ли определять директивы using в действии "Задание- сценарий"?
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data;
using Terrasoft.Common;
using Terrasoft.Core;
using Terrasoft.Core.DB;
using Terrasoft.Core.Entities;
...
Если да, то они тоже попадут в тело метода ScriptTask1Execute.
Как правильно написать серверный код в действии "Задание- сценарий", чтобы его можно было отладить в MS Visual Studio? Особенно, если на вход действия подается некий параметр события, который в IDE определяет как undefined?
Был бы весьма признателен за информацию.
Спасибо.
--
С уважением, Алексей Быков.
Нравится
В 7.7 есть особенности использования UserConnection в БП.
Подробнее можно ознакомиться в теме:
http://www.community.terrasoft.ru/forum/topic/14645
Директивы using указываются один раз для всего процесса. Делается это структуре процесса (боковая панель).
Александр, большое спасибо за ответ! Сейчас поизучаю.
Превосходно, очень признателен. То, что мне и нужно было.
Кстати сказать, попытался получить экземпляр класса UserConnection и некоторый параметр процесса таким образом:
var userConnection = Get("UserConnection"); var temp = Get("addedRecordId");
Ошибки компиляции:
Если использовать context.UserConnection, то все Ок.
Попробуйте явно указать тип для метода Get
var userConnection = Get<UserConnection>("UserConnection"); var temp = Get<Guid>("addedRecordId");
И судя по ошибкам temp у Вас объявляется 2 раза.
Также можно указать флаг принудительная компиляция для элемента или процесса и он будет всегда компилироваться, тогда Вам не нужно будет использовать данный подход.
Александр, спасибо еще раз!
Да, все верно, temp я объявил два раза. Попробую явно указать тип.