Сценарий создания индекса для столбца таблицы в глобальном модуле
В статье приведён пример сценария создания индекса для столбца таблицы в глобальном модуле. Аналогично можно выполнить любые преобразования базы данных.
using System;
using System.Collections.Generic;
using EleWise.ELMA.ComponentModel;
using EleWise.ELMA.Runtime.Db;
using EleWise.ELMA.Runtime.Db.Migrator.Framework;
namespace DbStructure
{
/// <summary>
/// Обработка действий при преобразовании структуры БД
/// </summary>
[Component]
public class GlobalModuleDbUpdateHandler : DbUpdateHandler
{
/// <summary>
/// Uid провайдера, для которого предназначается расширение (Guid.Empty применяется для всех провайдеров)
/// </summary>
public override Guid ProviderUid
{
get { return Guid.Empty; }
}
/// <summary>
/// Определяет, есть ли изменения в структуре
/// </summary>
public override bool HasChanges
{
get { return !Transform.IndexExists("Address", "Address_Zip"); }
}
/// <summary>
/// Нужно ли пересоздавать все ограничения, индексы и внешние ключи
/// </summary>
public override bool NeedRecreateConstraints
{
get { return false; }
}
/// <summary>
/// После создания/преобразования таблиц и столбцов
/// </summary>
public override void OnTablesDeleted() // при NeedRecreateConstraints => false OnIndexesCreating не вызывается, ближайшее событие до него - OnTablesDeleted
{
// Создание индекса Address_Zip для таблицы Address и столбца Zip
Transform.AddIndex(new Index
{
Name = "Address_Zip",
TableName = "Address",
Columns = new List<string>{ "Zip" }
});
}
}
}