Exemplo n.º 1
0
        public bool NeedToCreateForeignKeyConstraints(SyncRelation relation)
        {
            string tableName = relation.GetTable().TableName;

            var relationName = NormalizeRelationName(relation.RelationName);

            bool alreadyOpened = this.connection.State == ConnectionState.Open;

            try
            {
                if (!alreadyOpened)
                {
                    this.connection.Open();
                }

                var relations = MySqlManagementUtils.RelationsForTable(this.connection, this.transaction, tableName);

                var foreignKeyExist = relations.Rows.Any(r =>
                                                         string.Equals(r["ForeignKey"].ToString(), relationName, SyncGlobalization.DataSourceStringComparison));

                return(!foreignKeyExist);
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"Error during checking foreign keys: {ex}");
                throw;
            }
            finally
            {
                if (!alreadyOpened && this.connection.State != ConnectionState.Closed)
                {
                    this.connection.Close();
                }
            }
        }
Exemplo n.º 2
0
        public bool NeedToCreateForeignKeyConstraints(DmRelation foreignKey)
        {
            string parentTable    = foreignKey.ParentTable.TableName;
            string parentSchema   = foreignKey.ParentTable.Schema;
            string parentFullName = String.IsNullOrEmpty(parentSchema) ? parentTable : $"{parentSchema}.{parentTable}";

            bool alreadyOpened = connection.State == ConnectionState.Open;

            try
            {
                if (!alreadyOpened)
                {
                    connection.Open();
                }

                var dmTable = MySqlManagementUtils.RelationsForTable(connection, transaction, parentFullName);

                var foreignKeyExist = dmTable.Rows.Any(r =>
                                                       dmTable.IsEqual(r["ForeignKey"].ToString(), foreignKey.RelationName));

                return(!foreignKeyExist);
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"Error during checking foreign keys: {ex}");
                throw;
            }
            finally
            {
                if (!alreadyOpened && connection.State != ConnectionState.Closed)
                {
                    connection.Close();
                }
            }
        }
Exemplo n.º 3
0
        public bool NeedToCreateForeignKeyConstraints(DmRelation foreignKey)
        {
            string parentTable    = foreignKey.ParentTable.TableName;
            string parentSchema   = foreignKey.ParentTable.Schema;
            string parentFullName = string.IsNullOrEmpty(parentSchema) ? parentTable : $"{parentSchema}.{parentTable}";

            var relationName = NormalizeRelationName(foreignKey.RelationName);

            bool alreadyOpened = this.connection.State == ConnectionState.Open;

            // Don't want foreign key on same table since it could be a problem on first
            // sync. We are not sure that parent row will be inserted in first position
            if (string.Equals(parentTable, foreignKey.ChildTable.TableName, StringComparison.CurrentCultureIgnoreCase))
            {
                return(false);
            }

            try
            {
                if (!alreadyOpened)
                {
                    this.connection.Open();
                }

                var dmTable = MySqlManagementUtils.RelationsForTable(this.connection, this.transaction, parentFullName);

                var foreignKeyExist = dmTable.Rows.Any(r =>
                                                       dmTable.IsEqual(r["ForeignKey"].ToString(), relationName));

                return(!foreignKeyExist);
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"Error during checking foreign keys: {ex}");
                throw;
            }
            finally
            {
                if (!alreadyOpened && this.connection.State != ConnectionState.Closed)
                {
                    this.connection.Close();
                }
            }
        }