Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Описание основных методов EntitySchemaQuery.

1. Общее описание

EntitySchemaQuery (в дальнейшем ESQ) представляет собой высокоуровневый класс, позволяющий собирать сложные запросы, используя только понятия путей к колонкам объекта таблицы (в дальнейшем схемы) относительно корневой таблицы (RootSchema).

2. Конструкторы

public EntitySchemaQuery()

– конструктор по умолчанию. Используется исключительно для внутренних целей и не применим в конфигурации.

public EntitySchemaQuery(EntitySchema rootSchema)

– конструктор принимающий экземпляр схемы, которая будет использоваться как корневая RootSchema.
Где: rootSchema - экземпляр схемы.

public EntitySchemaQuery(EntitySchemaManager entitySchemaManager, stringsourceSchemaName)

- конструктор принимающий экземпляр менеджера схем и имя схемы. Осуществляется поиск схемы по имени в менеджере и заполнение свойства RootSchema.
Где: entitySchemaManager - экземпляр менеджера схем.
sourceSchemaName – имя схемы в менеджере

public EntitySchemaQuery(EntitySchemaQuery source)

– конструктор копирования. Объект создается на основании экземпляра переданного объекта.
Где: source – экземпляр объекта-источника копирования.

3. Свойства

public EntitySchema RootSchema

– корневая схема ESQ. Все пути к колонкам схем, в том числе и других, задаются относительно этой корневой схемы. Заполняется при создании объекта.
Изменение: только чтение
Значение по умолчанию: null

public EntitySchemaQueryColumn PrimaryQueryColumn

НЕ нашли? Не то? Что вы ищете?

– колонка ESQ созданная по первичной колонке корневой схемы. Заполняется при первом обращении.
Изменение: только чтение
Значение по умолчанию: экземпляр созданный по первичной колонке корневой схемы

public EntitySchemaQueryColumnCollection Columns

– коллекция добавленных ESQ колонок участвующих в конечном запросе.
Изменение: только чтение с возможность наполнения коллекции
Значение по умолчанию: содержит колонку из свойства PrimaryQueryColumn

public EntitySchemaQueryFilterCollection Filters

– коллекция добавленных ESQ фильтров участвующих в конечном запросе.
Изменение: только чтение с возможность наполнения коллекции.
Значение по умолчанию: пустая коллекция

public QueryJoinRightLevel JoinRightState

– параметр определяющий условие наложение прав если схема администрируется по записям при использовании связанных таблиц.
Изменение: чтение и запись
Значение по умолчанию: вычитывается из системной настройки «QueryJoinRightLevel». Если настройка не задана то значение равно EnabledForAdditionalColumns;
Доступные значения: 
QueryJoinRightLevel. EnabledAlways – всегда
QueryJoinRightLevel. EnabledForAdditionalColumns – накладывать только если из связанной схемы в запросе используются колонки отличные первичной(PrimaryColumn) и первичной для отображения(
QueryJoinRightLevel. Disabled – никогда не накладывать

public bool IsDistinct

– убирать или нет дубли в результирующем наборе данных
Изменение: чтение и запись
Значение по умолчанию: false
Пример:

var esq = newhttp://www.community.terrasoft.ua/sites/all/themes/terrasoft/img/icons/link.gif EntitySchemaQuery(EntitySchemaManager, " ESQCityNA");
esq. IsDistinct = true;
esq. AddColumn("Id");
string sqlText = esq. GetSelectQuery(CurrentConnection).GetSqlText();


SqlText:

SELECT DISTINCT "Id"
FROM "ESQCityNA" "ESQCityNA"

4. Методы

a. Методы управления колоноками

public void AddColumn(EntitySchemaQueryColumn queryColumn)

– добавляет созданную ранее ESQ колонку в коллекцию колонок
Где: queryColumn – экземпляр колонки.
Пример:

var esq = newhttp://www.community.terrasoft.ua/sites/all/themes/terrasoft/img/icons/link.gif EntitySchemaQuery();
var column = newhttp://www.community.terrasoft.ua/sites/all/themes/terrasoft/img/icons/link.gif EntitySchemaQueryColumn();
esq. AddColumn(column);

public EntitySchemaQueryColumn AddColumn(string columnPath)

– создает и добавляет ESQ колонку по пути к колонке схемы относительно корневой RootSchema схемы(объекта)
Где: columnPath – путь к колонке схемы относительно корневой схемы.
Возвращает: экземпляр созданной колонки.
Пример:

var esq = newhttp://www.community.terrasoft.ua/sites/all/themes/terrasoft/img/icons/link.gif EntitySchemaQuery(EntitySchemaManager, "City");
esq. AddColumn("Name");
string sqlText = esq. GetSelectQuery(CurrentConnection).GetSqlText();


SqlText запроса:

SELECT "Name"
FROM "City"

public EntitySchemaQueryColumn AddColumn(EntitySchemaQueryFunction function)

– создает и добавляет ESQ колонку по переданной функции.
Где: function – экземпляр ESQ функции.
Возвращает: экземпляр созданной колонки.
Пример:

var esq = newhttp://www.community.terrasoft.ua/sites/all/themes/terrasoft/img/icons/link.gif EntitySchemaQuery(EntitySchemaManager, "City");
var func = esq. CreateIsNullFunction("Name", "Code");
esq. AddColumn(func);
string sqlText = esq. GetSelectQuery(CurrentConnection).GetSqlText();


SqlText запроса:

SELECT NVL("City"."Name", "City"."Code") "IsNull"
FROM "City" "City"

public EntitySchemaQueryColumn AddColumn(string columnPath, AggregationTypeStrict aggregationType, out EntitySchemaQuery subQuery)

– создает и добавляет ESQ колонку в виде подзапроса, возвращающего результат указанной агрегирующей функции, по пути к колонке схемы относительно корневой RootSchema схемы(объекта).
Где: columnPath – путь к колонке схемы относительно корневой схемы.
aggregationType – значение перечисления типов агрегирующих функций

public enum AggregationTypeStrict {
        Count,
        Sum,
        Avg,
        Min,
        Max
}


subQuery – ссылка на созданный подзапрос, помещенный в колонку
Возвращает: экземпляр созданной колонки.
Пример:

var esq = newhttp://www.community.terrasoft.ua/sites/all/themes/terrasoft/img/icons/link.gif EntitySchemaQuery(EntitySchemaManager, "ESQCountryNA");
EntitySchemaQuery subEsq = null;
esq. AddColumn("[ESQCityNA:Country].Name", AggregationTypeStrict. Count, outsubEsq);
string sqlText = esq. GetSelectQuery(CurrentConnection).GetSqlText();


SqlText запроса:

SELECT (
   SELECT COUNT("SubESQCityNA"."Id") "Count"
   FROM "ESQCityNA" "SubESQCityNA"
   WHERE "SubESQCityNA"."CountryId" = "ESQCountryNA"."Id") "SubESQCityNA"
FROM "ESQCountryNA" "ESQCountryNA"

public void RemoveColumn(string columnName)

– удаляет ESQ колонку из коллекции колонок по имени
Где: columnName – имя удаляемой колонки

public void AddAllSchemaColumns()

– создает набор ESQ колонок по всем колонкам корневой таблицы

public EntitySchemaQueryColumn AddColumn(object parameterValue, DataValueType parameterDataValueType)

– создает и добавляет колонку-параметр которая будет выбирать значение переданного параметра.
Где: parameterValue – значение параметра
parameterDataValueType – тип параметра
Возвращает: экземпляр созданной колонки.

public EntitySchemaQueryColumn AddColumn(EntitySchemaQuery subQuery)

– создает и добавляет колонку-подзапрос на основании переданного подзапроса
Где: subQuery – подзапрос
Возвращает: экземпляр созданной колонки.

b. Методы добавления фильтров

public IEntitySchemaQueryFilterItem CreateFilter(FilterComparisonType comparisonType, string leftExpressionColumnPath, params string[]rightExpressionColumnPaths)

– создает и возвращает фильтр по двум колонкам.
Где: comparisonType – тип сравнения
leftExpressionColumnPath – путь к колонке в левой части фильтра
rightExpressionColumnPaths – пути к колонке в правой части фильтра
Возвращает: экземпляр созданного фильтра
Пример:

var esq = newhttp://www.community.terrasoft.ua/sites/all/themes/terrasoft/img/icons/link.gif EntitySchemaQuery(EntitySchemaManager, "ESQCityNA");
esq. AddColumn("Id");
var filter = esq. CreateFilter(FilterComparisonType. Equal, "ModifiedOn","CreatedOn");
esq. Filters. Add(filter);
string sqlText = esq. GetSelectQuery(CurrentConnection).GetSqlText();


SqlText запроса:

SELECT "ESQCityNA"."Id" "Id"
FROM "ESQCityNA" "ESQCityNA"
WHERE "ESQCityNA"."ModifiedOn" = "ESQCityNA"."CreatedOn"

public IEntitySchemaQueryFilterItem CreateFilter(FilterComparisonType comparisonType, string leftExpressionColumnPath, EntitySchemaQueryFunction rightExpressionValue)

– создает фильтр по колонке и функции
Где: comparisonType – тип сравнения
leftExpressionColumnPath – путь к колонке в левой части фильтра
rightExpressionValue – экземпляр функции в правой части фильтра
Возвращает: экземпляр созданного фильтра
Пример:

var esq = newhttp://www.community.terrasoft.ua/sites/all/themes/terrasoft/img/icons/link.gif EntitySchemaQuery(EntitySchemaManager, "ESQCityNA");
esq. AddColumn("Id");
var func = esq. CreateIsNullFunction("ModifiedOn", "CreatedOn");
var filter = esq. CreateFilter(FilterComparisonType. Equal, "ModifiedOn", func);
esq. Filters. Add(filter);
string sqlText = esq. GetSelectQuery(CurrentConnection).GetSqlText();


SqlText запроса:

SELECT "ESQCityNA"."Id" "Id"
FROM "ESQCityNA" "ESQCityNA"
WHERE "ESQCityNA"."ModifiedOn" = NVL("ESQCityNA"."ModifiedOn","ESQCityNA"."CreatedOn")

public IEntitySchemaQueryFilterItem CreateFilter(FilterComparisonType comparisonType, string leftExpressionColumnPath, EntitySchemaQueryMacrosType macrosType)

– создает фильтр по колонке и значению макроса.
Где: comparisonType – тип сравнения
leftExpressionColumnPath – путь к колонке в левой части фильтра
macrosType – значение перечисления макроса определяющее функциональность фильтра
Значения:

public enum EntitySchemaQueryMacrosType {
        None,
        CurrentUser,
        CurrentUserContact,
        Yesterday,
        Today,
        Tomorrow,
        PreviousWeek,
        CurrentWeek,
        NextWeek,
        PreviousMonth,
        CurrentMonth,
        NextMonth,
        PreviousQuarter,
        CurrentQuarter,
        NextQuarter,
        PreviousHalfYear,
        CurrentHalfYear,
        NextHalfYear,
        PreviousYear,
        CurrentYear,
        NextYear
}


Возвращает: экземпляр созданного фильтра
Пример:

var esq = newhttp://www.community.terrasoft.ua/sites/all/themes/terrasoft/img/icons/link.gif EntitySchemaQuery(EntitySchemaManager, "ESQCityNA");
esq. AddColumn("Id");
var filter = esq. CreateFilter(FilterComparisonType. Equal, "ModifiedOn", EntitySchemaQueryMacrosType. CurrentMonth);
esq. Filters. Add(filter);
string sqlText = esq. GetSelectQuery(CurrentConnection).GetSqlText();


SqlText запроса:

SELECT "ESQCityNA"."Id" "Id"
FROM "ESQCityNA" "ESQCityNA"
WHERE ("ESQCityNA"."ModifiedOn" >= :P1 AND "ESQCityNA"."ModifiedOn" < :P2)

public IEntitySchemaQueryFilterItem CreateFilter(FilterComparisonType comparisonType, string leftExpressionColumnPath, EntitySchemaQuery rightExpressionValue)

– создает фильтр по колонке и подзапросу
Где: comparisonType – тип сравнения
leftExpressionColumnPath – путь к колонке в левой части фильтра
rightExpressionValue – подзапрос в правой части фильтра
Возвращает: экземпляр созданного фильтра
Пример:

var esq = newhttp://www.community.terrasoft.ua/sites/all/themes/terrasoft/img/icons/link.gif EntitySchemaQuery(EntitySchemaManager, "ESQCityNA");
esq. AddColumn("Id");
var subEsq = newhttp://www.community.terrasoft.ua/sites/all/themes/terrasoft/img/icons/link.gif EntitySchemaQuery(EntitySchemaManager, "ESQCityNA");
subEsq. AddColumn(subEsq. CreateAggregationFunction(AggregationTypeStrict. Max,"ModifiedOn"));
var filter = esq. CreateFilter(FilterComparisonType. Equal, "ModifiedOn", subEsq);
esq. Filters. Add(filter);
string sqlText = esq. GetSelectQuery(CurrentConnection).GetSqlText();


SqlText запроса:

SELECT "ESQCityNA"."Id" "Id"
FROM "ESQCityNA" "ESQCityNA"
WHERE "ESQCityNA"."ModifiedOn" =
       (SELECT MAX("ESQCityNA"."ModifiedOn") "Max"
       FROM "ESQCityNA" "ESQCityNA")

public IEntitySchemaQueryFilterItem CreateFilter(FilterComparisonType comparisonType, string leftExprColumnPath, AggregationTypeStrict leftExprAggregationType, object rightExprParameterValue, out EntitySchemaQuery leftExprSubQuery)

– создает фильтр с агрегирующим подзапросом по колонке в левой и значением в правой части фильтра
Где: comparisonType – тип сравнения
leftExprColumnPath – путь к колонке в левой части фильтра
leftExprAggregationType – тип агрегирующей функции
rightExpressionValue – значение в правой части фильтра
leftExprSubQuery – возвращаемый экземпляр созданного подзапроса
Возвращает: экземпляр созданного фильтра
Пример:

var esq = newhttp://www.community.terrasoft.ua/sites/all/themes/terrasoft/img/icons/link.gif EntitySchemaQuery(EntitySchemaManager, "ESQCountryNA");
esq. AddColumn("Id");
EntitySchemaQuery subEsq = null;
var filter = esq. CreateFilter(FilterComparisonType. GreaterOrEqual, "[ESQCityNA:Country].Name", AggregationTypeStrict. Count, 5, out subEsq);
esq. Filters. Add(filter);
string sqlText = esq. GetSelectQuery(CurrentConnection).GetSqlText();


SqlText запроса:

SELECT "ESQCountryNA"."Id" "Id"
FROM "ESQCountryNA" "ESQCountryNA"
WHERE (SELECT COUNT("SubESQCityNA"."Id") "Count"
             FROM "ESQCityNA" "SubESQCityNA"
             WHERE "SubESQCityNA"."CountryId" = "ESQCountryNA"."Id") >= 5

public IEntitySchemaQueryFilterItem CreateFilterWithParameters(FilterComparisonType comparisonType, booluseDisplayValue, string leftExpressionColumnPath, params object[]rightExpressionParameterValues)

– создает фильтр по колонке в левой части и параметром или несколькими параметрами в правой части
Где: comparisonType – тип сравнения
useDisplayValue – определяет для колонок типа справочник использовать ли в фильтре хранимое или отображаемое значение
leftExprColumnPath – путь к колонке в левой части фильтра
rightExpressionParameterValues – значения в правой части фильтра
Возвращает: экземпляр созданного фильтра
Пример:

var esq = newhttp://www.community.terrasoft.ua/sites/all/themes/terrasoft/img/icons/link.gif EntitySchemaQuery(EntitySchemaManager, "ESQCountryNA");
esq. AddColumn("Id");
var filter = esq. CreateFilterWithParameters(FilterComparisonType. Equal,"CreatedOn", newhttp://www.community.terrasoft.ua/sites/all/themes/terrasoft/img/icons/link.gif DateTime());
esq. Filters. Add(filter);
string sqlText = esq. GetSelectQuery(CurrentConnection).GetSqlText();


SqlText запроса:

SELECT "ESQCountryNA"."Id" "Id"
FROM "ESQCountryNA" "ESQCountryNA"
WHERE "ESQCountryNA"."CreatedOn" = :P1

public IEntitySchemaQueryFilterItem CreateIsNullFilter(stringleftExpressionColumnPath)

– создает фильтр проверки колонки на пустое значение
Где: leftExpressionColumnPath – путь к колонке по которой строится фильтр
Возвращает: экземпляр созданного фильтра
Пример:

var esq = newhttp://www.community.terrasoft.ua/sites/all/themes/terrasoft/img/icons/link.gif EntitySchemaQuery(EntitySchemaManager, "ESQCountryNA");
esq. AddColumn("Id");
var filter = esq. CreateIsNullFilter("CreatedOn");
esq. Filters. Add(filter);
string sqlText = esq. GetSelectQuery(CurrentConnection).GetSqlText();


SqlText запроса:

SELECT "ESQCountryNA"."Id" "Id"
FROM "ESQCountryNA" "ESQCountryNA"
WHERE "ESQCountryNA"."CreatedOn" IS NULL