Esempio n. 1
0
        /// <inheritdoc />
        protected override void Wireup <T>(DbTable <T> dbTable)
        {
            var model        = dbTable.Model;
            var keyMapping   = _keyMappingGetter(dbTable.DbSession, model);
            var fkConstraint = new DbForeignKeyConstraint(Name, Description, keyMapping.SourceKey, keyMapping.TargetKey, DeleteRule, UpdateRule);

            model.AddDbTableConstraint(fkConstraint, false);
        }
Esempio n. 2
0
            private static DbForeignKeyConstraint CreateForeignKeyConstraint <TKey>(string name, string description, TKey foreignKey, Model <TKey> refTableModel, ForeignKeyRule deleteRule, ForeignKeyRule updateRule)
                where TKey : CandidateKey
            {
                Debug.Assert(foreignKey != null);
                Debug.Assert(refTableModel != null);

                var model = foreignKey.ParentModel;
                var foreignKeyConstraint = new DbForeignKeyConstraint(name, description, foreignKey, refTableModel.PrimaryKey, deleteRule, updateRule);

                Debug.Assert(!(refTableModel != model && string.IsNullOrEmpty(foreignKeyConstraint.ReferencedTableName)));
                return(foreignKeyConstraint);
            }
Esempio n. 3
0
        private static void GenerateForeignKeyConstraint(IndentedStringBuilder sqlBuilder, DbForeignKeyConstraint constraint)
        {
            Debug.Assert(constraint != null);

            sqlBuilder.Append("FOREIGN KEY");
            constraint.ForeignKey.GenerateColumnList(sqlBuilder);
            sqlBuilder.IndentLevel++;
            sqlBuilder.Append("REFERENCES ");
            sqlBuilder.Append(constraint.ReferencedTableName.ToQuotedIdentifier());
            constraint.ReferencedKey.GenerateColumnList(sqlBuilder);
            constraint.DeleteRule.GenerateForeignKeyRule(sqlBuilder, "DELETE");
            sqlBuilder.AppendLine();
            constraint.UpdateRule.GenerateForeignKeyRule(sqlBuilder, "UPDATE");
            sqlBuilder.IndentLevel--;
        }