Сложный
На заметку. Примеры 1-5, приведенные в этой статье, реализованы в веб-сервисе. Пакет с реализацией веб-сервиса прикреплен в блоке "Ресурсы".
Пример 1
Пример. Получить значение колонки схемы City с именем Name.
Метод GetEntityColumnData
public string GetEntityColumnData() { var result = ""; /* Создание запроса к схеме City, добавление в запрос колонки Name. */ var esqResult = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "City"); var colName = esqResult.AddColumn("Name"); /* Выполнение запроса к базе данных и получение объекта с заданным идентификатором. UId объекта можно получить из строки навигации браузера с открытой страницей записи раздела. */ var entity = esqResult.GetEntity(UserConnection, new Guid("100B6B13-E8BB-DF11-B00F-001D60E938C6")); /* Получение значения колонки объекта. */ result += entity.GetColumnValue(colName.Name).ToString(); return result; }
Пример 2
Пример. Получить коллекцию имен колонок схемы City.
Метод GetEntityColumns
public IEnumerable<string> GetEntityColumns() { /* Создание объекта строки данных схемы City (по идентификатору схемы, полученному из базы данных). */ var entity = new Entity(UserConnection, new Guid("5CA90B6A-93E7-4448-BEFE-AB5166EC2CFE")); /* Получение из базы данных объекта с заданным идентификатором. UId объекта можно получить из строки навигации браузера с открытой страницей записи раздела. */ entity.FetchFromDB(new Guid("100B6B13-E8BB-DF11-B00F-001D60E938C6"),true); /* Получение коллекции имен колонок объекта. */ var result = entity.GetColumnValueNames(); return result; }
Пример 3
Пример. Удалить из базы данных записи схемы Order.
Метод DeleteEntity
public bool DeleteEntity() { /* Создание запроса к схеме Order, добавление в запрос всех колонок схемы. */ var esqResult = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Order"); esqResult.AddAllSchemaColumns(); /* Выполнение запроса к базе данных и получение объекта с заданным идентификатором. UId объекта можно получить из строки навигации браузера с открытой страницей записи раздела. */ var entity = esqResult.GetEntity(UserConnection, new Guid("e3bfa32f-3fe9-4bae-9332-16c162c51e0d")); /* Удаление объекта из базы данных. */ entity.Delete(); /* Проверка, существует ли в базе данных объект с заданным идентификатором. */ var result = entity.ExistInDB(new Guid("e3bfa32f-3fe9-4bae-9332-16c162c51e0d")); return result; }
Пример 4
Пример. Изменить статус заказа.
Метод UpdateEntity
public bool UpdateEntity() { /* Создание запроса к схеме Order, добавление в запрос всех колонок схемы. */ var esqResult = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Order"); esqResult.AddAllSchemaColumns(); /* Выполнение запроса к базе данных и получение объекта с заданным идентификатором. UId объекта можно получить из строки навигации браузера с открытой страницей записи раздела. */ var entity = esqResult.GetEntity(UserConnection, new Guid("58be5223-715d-4b16-a5c4-e3d4ec0412d9")); /* Создание объекта строки данных схемы OrderStatus. */ var statusSchema = UserConnection.EntitySchemaManager.GetInstanceByName("OrderStatus"); var newStatus = statusSchema.CreateEntity(UserConnection); /* Получение из базы данных объекта c заданным названием. */ newStatus.FetchFromDB("Name", "4. Completed"); /* Присваивает колонке StatusId новое значение. */ entity.SetColumnValue("StatusId", newStatus.GetTypedColumnValue<Guid>("Id")); /* Сохранение измененного объекта в базе данных. */ var result = entity.Save(); return result; }
Пример 5
Пример. Добавить город с указанным названием, привязав его к указанной стране.
Метод UpdateEntity
public bool InsertEntity(string city, string country) { city = city ?? "unknown city"; country = country ?? "unknown country"; var citySchema = UserConnection.EntitySchemaManager.GetInstanceByName("City"); var entity = citySchema.CreateEntity(UserConnection); entity.FetchFromDB("Name", city); /* Устанавливает для колонок объекта значения по умолчанию. */ entity.SetDefColumnValues(); var contryEntity = new Entity(UserConnection, new Guid("09FCE1F8-515C-4296-95CD-8CD93F79A6CF")); contryEntity.FetchFromDB("Name", country); /* Присваивает колонке Name переданное название города. */ entity.SetColumnValue("Name", city); /* Присваивает колонке CountryId UId переданной страны. */ entity.SetColumnValue("CountryId", contryEntity.GetTypedColumnValue<Guid>("Id")); var result = entity.Save(); return result; }
Пример 6
Пример. Создать контакт с именем "User01".
EntitySchema contactSchema = UserConnection.EntitySchemaManager.GetInstanceByName("Contact"); Entity contactEntity = contactSchema.CreateEntity(UserConnection); contactEntity.SetDefColumnValues(); contactEntity.SetColumnValue("Name", "User01"); contactEntity.Save();
Пример 7
Пример. Изменить имя контакта на "User02".
EntitySchema entitySchema = UserConnection.EntitySchemaManager.GetInstanceByName("Contact"); Entity entity = entitySchema.CreateEntity(UserConnection); if (!entity.FetchFromDB(some_id) { return false; } entity.SetColumnValue("Name", "User02"); return entity.Save();
Пример 8
Пример. Удалить контакт с именем "User02".
EntitySchema entitySchema = UserConnection.EntitySchemaManager.GetInstanceByName("Contact"); Entity entity = entitySchema.CreateEntity(UserConnection); var fetchConditions = new Dictionary<string, object> { {"Name", "User02"} }; if (entity.FetchFromDB(fetchConditions)) { entity.Delete(); }