/// <summary>
        ///
        /// </summary>
        /// <param name="codeUnique"></param>
        /// <param name="databaseUniques"></param>
        protected virtual void MergeTableUnique(UniqueKeyInfo codeUnique, List <UniqueKeyInfo> databaseUniques)
        {
            var databaseUnique = databaseUniques.FirstOrDefault(f => f.Name == codeUnique.Name);

            if (databaseUnique == null)
            {
                CreateUniqueKey(codeUnique);
                return;
            }

            if (databaseUnique.UniqueColumns.Count != codeUnique.UniqueColumns.Count)
            {
                DropUniqueKey(databaseUnique);
                CreateUniqueKey(codeUnique);
                return;
            }

            var dbColumns   = databaseUnique.UniqueColumns;
            var codeColumns = codeUnique.UniqueColumns;

            var equalColumns = codeColumns.All(c => dbColumns.Any(db => db.IsEqual(c)));

            if (equalColumns)
            {
                return;
            }

            DropUniqueKey(databaseUnique);
            CreateUniqueKey(databaseUnique);
        }
Exemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="table"></param>
        /// <param name="sqlUniqueKey"></param>
        /// <returns></returns>
        private UniqueKeyInfo GetUnique(TableInfo table, SqlUniqueKeyInfo sqlUniqueKey)
        {
            var unique = new UniqueKeyInfo();

            unique.Table         = table;
            unique.Name          = sqlUniqueKey.UniqueName;
            unique.UniqueColumns = sqlUniqueKey.SqlUniqueKeys.Select(s => table.GetColumn(s.ColumnName)).ToList();

            return(unique);
        }
Exemplo n.º 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="table"></param>
        /// <param name="sqlUniqueKey"></param>
        /// <returns></returns>
        private UniqueKeyInfo ConvertToUniqueInfo(TableInfo table, SqlUniqueKeyInfo sqlUniqueKey)
        {
            var uniqueKey = new UniqueKeyInfo();

            uniqueKey.Table         = table;
            uniqueKey.Name          = sqlUniqueKey.UniqueName;
            uniqueKey.UniqueColumns = ConvertToUniqueColumnInfo(table, sqlUniqueKey).ToList();

            return(uniqueKey);
        }
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="uniqueKey"></param>
        protected virtual T UniqueKeyCommand <T>(UniqueKeyInfo uniqueKey) where T : class, IUniqueKeyCommand
        {
            var service = CommandServices.GetCommand <T>();

            if (service == null)
            {
                return(null);
            }

            service.SetUniqueKey(uniqueKey);
            Commands.Add(service);
            return(service);
        }
Exemplo n.º 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="table"></param>
        /// <returns></returns>
        private IEnumerable <UniqueKeyInfo> GetUniqueKeys(EFTableInfo table)
        {
            var indexes = table.Entity.GetIndexes().Where(w => w.IsUnique).ToList();

            foreach (var index in indexes)
            {
                var uniqueInfo = new UniqueKeyInfo();
                uniqueInfo.Table         = table;
                uniqueInfo.Name          = index.Relational()?.Name;
                uniqueInfo.UniqueColumns = index.Properties.Select(s => GetUniqueColumn(table, s)).ToList();

                _migrateManager.CorrectName(uniqueInfo);
                yield return(uniqueInfo);
            }
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="uniqueKey"></param>
 public void Correct(UniqueKeyInfo uniqueKey)
 {
     uniqueKey.Name = string.IsNullOrEmpty(uniqueKey.Name)
         ? "UC_" + uniqueKey.Table.Name + "_" + string.Join("_", uniqueKey.UniqueColumns.Select(s => s.Name))
         : uniqueKey.Name;
 }
Exemplo n.º 7
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="uniqueKey"></param>
 public void Correct(UniqueKeyInfo uniqueKey)
 {
 }
Exemplo n.º 8
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="uniqueKey"></param>
 public virtual void SetUniqueKey(UniqueKeyInfo uniqueKey)
 {
     UniqueKey = uniqueKey;
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="uniqueKey"></param>
 protected virtual void DropUniqueKey(UniqueKeyInfo uniqueKey)
 {
     UniqueKeyCommand <IDropUniqueKeyCommand>(uniqueKey);
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="uniqueKey"></param>
 protected virtual void CreateUniqueKey(UniqueKeyInfo uniqueKey)
 {
     UniqueKeyCommand <ICreateUniqueKeyCommand>(uniqueKey);
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="manager"></param>
 /// <param name="uniqueKey"></param>
 public static void CorrectName(this IMigrateManager manager, UniqueKeyInfo uniqueKey)
 {
     manager?.GetNamingManager()?.UniqueKeyNamingManager?.Correct(uniqueKey);
 }