public async Task <bool> NeedToCreateForeignKeyConstraintsAsync(SyncRelation relation) { string tableName = relation.GetTable().TableName; var relationName = NormalizeRelationName(relation.RelationName); bool alreadyOpened = this.connection.State == ConnectionState.Open; try { if (!alreadyOpened) { await connection.OpenAsync().ConfigureAwait(false); } var relations = await MySqlManagementUtils.GetRelationsForTableAsync(this.connection, this.transaction, tableName).ConfigureAwait(false); 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(); } } }
public async Task <bool> NeedToCreateForeignKeyConstraintsAsync(SyncRelation relation, DbConnection connection, DbTransaction transaction) { string tableName = relation.GetTable().TableName; var relationName = NormalizeRelationName(relation.RelationName); var relations = await MySqlManagementUtils.GetRelationsForTableAsync((MySqlConnection)connection, (MySqlTransaction)transaction, tableName).ConfigureAwait(false); var foreignKeyExist = relations.Rows.Any(r => string.Equals(r["ForeignKey"].ToString(), relationName, SyncGlobalization.DataSourceStringComparison)); return(!foreignKeyExist); }