«Центр Разработки и Внедрения Террасофт Поволжье» Работа с данными.

Презентация:



Advertisements
Похожие презентации
«Центр Разработки и Внедрения Террасофт Поволжье» Отчеты. От простого к ужасу.
Advertisements

«Центр Разработки и Внедрения Террасофт Поволжье» JS/ExtJS или как сломать мозг программисту C#
«Центр Разработки и Внедрения Террасофт Поволжье» Бизнес - процессы.
«Центр Разработки и Внедрения Террасофт Поволжье» Типичные задачи в Terrasoft 3.Х.
Центр Разработки и Внедрения Terrasoft Поволжье Документ как основа методологии.
«Центр Разработки и Внедрения Террасофт Поволжье» Пленарная сессия.
Bpmonline PT 1C Connector Центр Разработки и Внедрения Террасофт Поволжье Руководитель Отдела Исследований и Разработки Александр Свистунов.
«Центр Разработки и Внедрения Террасофт Поволжье» Общие принципы интеграций bpmonline.
Типы задач на коллоквиум 2 Реляционные и объектные модели для: – Хранения и работы с деревом произвольной глубины – Хранения и работа с графом – Работы.
«Центр Разработки и Внедрения Террасофт Поволжье» Интеграция с внешними системами.
CREATE TABLE Ident_table ( ID int IDENTITY(1, 1), some_values varchar(50)); IDENTITY [ ( seed, increment ) ]
Работа с базами данных – JDBC Введение в JDBC. JDBC JDBC (Java DataBase Connectivity) – технология доступа к базам данных для Java Состоит из: API (java.sql.
Функции с переменным числом аргументов private static int Sum(int a, int b) { return a + b; } static void Main() { int sum = Sum(1, 2); } 1 Функции.
Пример реализации приложения Программа отправки и анализа SMS-сообщений (через с WEB-интерфейсом.
Управление транспортно-логистической компанией на основе бизнес-процессов – способ увеличения прибыли и сокращения издержек Андроник Александр Руководитель.
Основы реляционных баз данных Лекция 6. Введение в SQL Желенкова Ольга Петровна, с.н.с. ОИ САО РАН, к.ф.-м.н апреля 2008.
PL/SQL Хранимые процедуры и функции. Процедуры [CREATE [OR REPLACE]] PROCEDURE procedure_name[(parameter[, parameter]...)] {IS | AS} [local declarations]
Выражения унарные (унарный минус) арифметические (+, -, *, /) сравнения (, =, =, , LIKE, BETWEEN...) конкатенации (||) логические (NOT, AND, OR)
Создание Web страниц Урок 12: PHP & MySQL Павел Бочаров.
1 Основы SQL: MySQL Будем использовать MySQL СУБД с открытым кодом Бесплатная версия (Community Edition) – на В Linux-дистрибутивах.
Транксрипт:

«Центр Разработки и Внедрения Террасофт Поволжье» Работа с данными

Содержание Классы доступа к БД Select, Insert, Update, Delete EntitySchemaQuery

Классы доступа к БД

Классы доступа к БД без учета прав доступа С учетом прав доступа Select Insert Update Delete InsertSelect StoredProcedure UserDefinedFunction CustomQuery EntitySchemaQuery

Классы доступа к БД без учета прав доступа

Select, Insert, Update, Delete // Получить количество активностей по ответственным var select = new Select(userConnection).Column(Func.Count("Id")).Column("OwnerId").From("Activity").GroupBy("OwnerId") as Select; Select new Update(UserConnection, "SocialAccount").Set("Public", Column.Parameter(false)).Where("Id").IsEqual(Column.Parameter(NewSocialAccountId)).Execute(); Update

StoredProcedure, UserDefinedFunction StoredProcedure setRecordPositionProcedure = new StoredProcedure(UserConnection, "tsp_ChangePrimaryCulture").WithParameter("SysCultureId", item.Key.ToString()) as StoredProcedure; setRecordPositionProcedure.Execute(); StoredProcedure UserDefinedFunction var userDefinedFunction = new UserDefinedFunction(userConnection, "fn_IsGuid").WithParameter("ObjectId", checkId);

InsertSelect var insertSelect = new InsertSelect(UserConnection). Into("SysUserInRole"). Set("CreatedOn", "ModifiedOn", "SysRoleId", "SysUserId"). FromSelect(new Select(UserConnection).Column(Column.Const(DateTime.Now)).Column(Column.Const(groupId)).Column("Id").From("SysAdminUnit").Where().Not().Exists(new Select(UserConnection). Column("Id"). From("SysUserInRole").As("ur"). Where("ur", "SysUserId").IsEqual("SysAdminUnit", "Id"). And("ur", "SysRoleId").IsEqual(Column.Parameter(groupId)) as Select).And("LDAPEntryId").In(query)); insertSelect.Execute();

CustomQuery string selectSqlText = con.Id, con.Name FROM Contact con JOIN SysAdminUnit sau ON con.Id = sau.ContactId JOIN SysUserInRole suir ON sau.Id = suir.SysUserId WHERE suir.SysRoleId = '{0}'", approvalId ); var query = new CustomQuery(UserConnection, selectSqlText); CustomQuery

EntitySchemaQuery

EntitySchemaQuery – это высокоуровневый класс, который предназначен для построения запросов на выборку из базы данных. Особенности Поддержка прав доступа Механизм кеширования Дополнительные настройки запроса

EntitySchemaQuery. Добавление колонок. EntitySchema schema = UserConnection.EntitySchemaManager.GetInstanceByName("Contact"); EntitySchemaQuery esq = new EntitySchemaQuery(schema); // Добавить колонку первичного ключа esq.PrimaryQueryColumn.IsAlwaysSelect = true; // Колонка корневой схемы string ColumnName = esq.AddColumn(" ").Name; // Колонка - справочник string ownerColumnName = esq.AddColumn("Owner.Name").Name; // Колонка схемы по произвольному внешнему ключу string activityContactColumnName = esq.AddColumn("[Activity:Owner:Id].Contact.Name").Name;

EntitySchemaQuery. Добавление колонок. Имя колонки строится по принципу [Имя_присоединяемой_схемы:Имя_колонки_для_связи_присоединяемой_ схемы:Имя_колонки_для_связи_текущей_схемы]. Если в качестве колонки для связи у текущей схемы выступает колонка Id, то в этом случае ее можно опустить, то есть имя колонки будет выглядеть следующим образом: [Имя_присоединяемой_схемы:Имя_колонки_для_связи_присоединяемой_ схемы]. Колонка схемы по произвольному внешнему ключу

EntitySchemaQuery. Фильтрация. Фильтр - это набор условий, применяемых при отображении данных запроса. CreateFilter() CreateFilterWithParameters() CreateIsNullFilter() CreateIsNotNullFilter() СreateExistsFilter() CreateNotExistsFilter() esq.CreateFilterWithParameters(FilterComparisonType.Contain, "[SysUserInRole:SysUser].SysRole.Name", "Юрист"); // Юрист

EntitySchemaQuery. Группировка фильтров. var filterOwner = esq.CreateFilterWithParameters(FilterComparisonType.Equal, "Contact.Id", ownerId); var filterLaywer = esq.CreateFilterWithParameters(FilterComparisonType.Contain, "[SysUserInRole:SysUser].SysRole.Name", "Юрист"); // Юрист EntitySchemaQueryFilterCollection filterCustom = new EntitySchemaQueryFilterCollection(esq, LogicalOperationStrict.Or); filterCustom.Add(filterOwner); filterCustom.Add(filterLaywer); esq.Filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "Id", userConnection.CurrentUser.Id)); esq.Filters.Add(filterCustom); По умолчанию фильтры группируются через AND. Дополнительная группировка осуществляется через создание экземпляра класса EntitySchemaQueryFilterCollection

EntitySchemaQuery. Агрегирующие функции. var esq = new EntitySchemaQuery(EntitySchemaManager, "ESQCountryNA"); EntitySchemaQuery subEsq = null; esq.AddColumn("[ESQCityNA:Country].Name", AggregationTypeStrict.Count, out subEsq); string sqlText = esq.GetSelectQuery(CurrentConnection).GetSqlText(); SELECT ( SELECT COUNT("SubESQCityNA"."Id") "Count" FROM "ESQCityNA" "SubESQCityNA" WHERE "SubESQCityNA"."CountryId" = "ESQCountryNA"."Id") "SubESQCityNA" FROM "ESQCountryNA" "ESQCountryNA" Создание и добавление колонки в виде подзапроса, возвращающего результат указанной агрегирующей функции, по пути к колонке схемы относительно корневой RootSchema

EntitySchemaQuery. Использование макросов. // Создание экземпляра запроса с корневой схемой Contact. var esqContact = new EntitySchemaQuery(userConnection.EntitySchemaManager, "Contact"); // В качестве типа макроса выбирается тип [Текущий месяц]. var esqMacrosType = EntitySchemaQueryMacrosType.CurrentMonth; // Создание экземпляра выражения для колонки "CreatedOn". var esqRightExpression = new EntitySchemaQueryExpression(esqContact.CreateSchemaColumnExpression("CreatedOn")); // Создание экземпляра фильтра с заданными параметрами. var esqFilter = esqContact.CreateFilter(FilterComparisonType.Equal, esqRightExpression, esqMacrosType); // Добавление фильтра в коллекцию фильтров результирующего запроса. esqContact.Filters.Add(esqFilter);

Россия: Самара, Московское шоссе 4а +7 (846) , Москва, Ул. Каланчевская, д (495) , Киев, пр-т. Краснозвездный, 115-А +38 (044) Украина: PORTLAND HOUSE, BRESSENDAN PLACE, LONDON SW1E 5RS +44 (2) UK: Alexandria: 901 N Pitt Street, Suite 325 Alexandria +1 (917) m