Удаление данных. Класс Delete
Glossary Item Box
Общие сведения
Класс Terrasoft.Core.DB.Delete предназначен для построения запросов на удаление записей в таблице базы данных Creatio. В результате создания и конфигурирования экземпляра этого класса будет построен запрос базу данных приложения в виде SQL-выражения DELETE.
Класс Terrasoft.Core.DB.Delete
К СВЕДЕНИЮ
Полный перечень методов и свойств класса Delete, его родительских классов, а также реализуемых им интерфейсов, можно найти в документации ".NET библиотеки классов ядра платформы".
Конструкторы
- public Delete(UserConnection userConnection) — создает экземпляр класса, используя UserConnection.
- public Delete(Delete source) — создает экземпляр класса, являющийся клоном экземпляра, переданного в качестве аргумента.
Свойства
Табл. 1. — Основные свойства класса
Свойство | Тип | Описание |
---|---|---|
UserConnection | Terrasoft.Core.UserConnection | Пользовательское подключение, используемое при выполнении запроса. |
Condition | Terrasoft.Core.DB.QueryCondition | Условие выражения Where запроса. |
HasCondition | bool | Определяет наличие выражения Where в запросе. |
Source | Terrasoft.Core.DB.ModifyQuerySource | Источник данных запроса. |
Методы
Табл. 2. — Основные методы класса
Методы | Описание | |
---|---|---|
string GetSqlText() | Возвращает SQL-текст запроса. | |
void BuildSqlText(StringBuilder sb) | Формирует текст запроса при помощи экземпляра StringBuilder. | |
void ResetCachedSqlText() | Очищает закэшированный текст запроса. | |
QueryParameterCollection GetUsingParameters() | Возвращает коллекцию параметров, используемых запросом. | |
int Execute() |
Выполняет запрос. Возвращает количество задействованных запросом записей. | |
int Execute(DBExecutor dbExecutor) |
Выполняет запрос, используя экземпляр DBExecutor. Возвращает количество задействованных запросом записей. | |
QueryCondition Where() QueryCondition Where(string sourceColumnAlias) QueryCondition Where(string sourceAlias, string sourceColumnAlias) QueryCondition Where(Select subSelect) QueryCondition Where(Query subSelectQuery) QueryCondition Where(QueryColumnExpression columnExpression) Query Where(QueryCondition condition) |
Добавляет к текущему запросу начальное условие. Параметры:
|
|
QueryCondition And() QueryCondition And(string sourceColumnAlias) QueryCondition And(string sourceAlias, string sourceColumnAlias) QueryCondition And(Select subSelect) QueryCondition And(Query subSelectQuery) QueryCondition And(QueryParameter parameter) QueryCondition And(QueryColumnExpression columnExpression) Query And(QueryCondition condition) |
К текущему условию запроса добавляет условие (предикат), используя логическую операцию И. Параметры:
|
|
QueryCondition Or() QueryCondition Or(string sourceColumnAlias) QueryCondition Or(string sourceAlias, string sourceColumnAlias) QueryCondition Or(Select subSelect) QueryCondition Or(Query subSelectQuery) QueryCondition Or(QueryParameter parameter) QueryCondition Or(QueryColumnExpression columnExpression) Query Or(QueryCondition condition) |
К текущему условию запроса добавляет условие (предикат), используя логическую операцию ИЛИ. Параметры:
|
|
Delete From(string schemaName) Delete From(ModifyQuerySource source) |
Добавляет в текущий запрос источник данных. Возвращает текущий экземпляр Delete. Параметры:
|
Примеры использования
Пакет с конфигурационным веб-сервисом, реализующим приведенные ниже примеры, можно скачать по ссылке.
ВАЖНО
В большинстве случаев запрос на удаление должен содержать условие Where, уточняющее какие именно записи необходимо удалить. Иначе будут удалены все записи.
ВАЖНО
Код в примерах показывает различные способы передачи параметров в запрос. При разработке проекта учитывайте, что в метод Column.Const не следует передавать параметры, контролируемые пользователем, так как это может привести к потенциальным sql-инъекциям.
Пример 1
Получить текст SQL запроса.
public string GetSqlTextExample(string name) { var result = ""; var delete = new Delete(UserConnection) .From("Contact") .Where("Name").IsEqual(Column.Const(name)); result = delete.GetSqlText(); return result; }
Пример 2
Изменить имя контакта на новое.
public string DeleteContacts(string name) { var delete = new Delete(UserConnection) .From("Contact") .Where("Name").IsEqual(Column.Parameter(name)); var cnt = delete.Execute(); return $"Contacts with name {name} were deleted. {cnt} rows affected"; }