コード例 #1
0
        public virtual Property FindTargetProperty(
            [NotNull] string foreignKeyConstraintId, [NotNull] string fromColumnId)
        {
            Check.NotEmpty(foreignKeyConstraintId, nameof(foreignKeyConstraintId));
            Check.NotEmpty(fromColumnId, nameof(fromColumnId));

            ForeignKeyColumnMapping foreignKeyColumnMapping;

            if (!_foreignKeyColumnMappings.TryGetValue(
                    foreignKeyConstraintId + fromColumnId, out foreignKeyColumnMapping))
            {
                Logger.LogWarning(
                    SqlServerDesignStrings.CannotFindForeignKeyMappingForConstraintId(
                        foreignKeyConstraintId, fromColumnId));
                return(null);
            }

            var toTable = _tables[_tableColumns[foreignKeyColumnMapping.ToColumnId].TableId];

            if (!_tableSelectionSet.Allows(toTable.SchemaName, toTable.TableName))
            {
                // target property belongs to a table which was excluded by the TableSelectionSet
                return(null);
            }

            Property toColumnRelationalProperty;

            if (!_columnIdToProperty.TryGetValue(
                    foreignKeyColumnMapping.ToColumnId, out toColumnRelationalProperty))
            {
                Logger.LogWarning(
                    SqlServerDesignStrings.CannotFindRelationalPropertyForColumnId(
                        foreignKeyConstraintId, foreignKeyColumnMapping.ToColumnId));
                return(null);
            }

            return(toColumnRelationalProperty);
        }