private void SetupProperties(SQL.DataClasses.Table Table, IMapping Mapping) { Table.AddColumn(Mapping.IDProperty.FieldName, Mapping.IDProperty.Type.ToDbType(), Mapping.IDProperty.MaxLength, Mapping.IDProperty.NotNull, Mapping.IDProperty.AutoIncrement, Mapping.IDProperty.Index, true, Mapping.IDProperty.Unique, "", "", ""); foreach (IProperty Property in Mapping.Properties) { if (!(Property is IManyToMany || Property is IManyToOne || Property is IMap || Property is IIEnumerableManyToOne || Property is IListManyToMany || Property is IListManyToOne)) { Table.AddColumn(Property.FieldName, Property.Type.ToDbType(), Property.MaxLength, !Property.NotNull, Property.AutoIncrement, Property.Index, false, Property.Unique, "", "", ""); } } }
private SQL.DataClasses.Table SetupAuditTables(SQL.DataClasses.Table Table) { SQL.DataClasses.Table AuditTable = new Utilities.SQL.DataClasses.Table(Table.Name + "Audit", Table.ParentDatabase); AuditTable.AddColumn("ID", DbType.Int32, 0, false, true, true, true, false, "", "", 0); AuditTable.AddColumn("AuditType", SqlDbType.NVarChar.ToDbType(), 1, false, false, false, false, false, "", "", ""); foreach (SQL.DataClasses.Interfaces.IColumn Column in Table.Columns) { AuditTable.AddColumn(Column.Name, Column.DataType, Column.Length, Column.Nullable, false, false, false, false, "", "", ""); } return(AuditTable); }
private void SetupDeleteTrigger(SQL.DataClasses.Table Table) { StringBuilder Columns = new StringBuilder(); StringBuilder Builder = new StringBuilder(); Builder.Append("CREATE TRIGGER dbo.").Append(Table.Name).Append("_Audit_D ON dbo.") .Append(Table.Name).Append(" FOR DELETE AS IF @@rowcount=0 RETURN") .Append(" INSERT INTO dbo.").Append(Table.Name).Append("Audit").Append("("); string Splitter = ""; foreach (Utilities.SQL.DataClasses.Interfaces.IColumn Column in Table.Columns) { Columns.Append(Splitter).Append(Column.Name); Splitter = ","; } Builder.Append(Columns.ToString()); Builder.Append(",AuditType) SELECT "); Builder.Append(Columns.ToString()); Builder.Append(",'D' FROM deleted"); Table.AddTrigger(Table.Name + "_Audit_D", Builder.ToString(), TriggerType.INSERT); }
private void SetupInsertUpdateTrigger(SQL.DataClasses.Table Table) { StringBuilder Columns = new StringBuilder(); StringBuilder Builder = new StringBuilder(); Builder.Append("CREATE TRIGGER dbo.").Append(Table.Name).Append("_Audit_IU ON dbo.") .Append(Table.Name).Append(" FOR INSERT,UPDATE AS IF @@rowcount=0 RETURN declare @AuditType") .Append(" char(1) declare @DeletedCount int SELECT @DeletedCount=count(*) FROM DELETED IF @DeletedCount=0") .Append(" BEGIN SET @AuditType='I' END ELSE BEGIN SET @AuditType='U' END") .Append(" INSERT INTO dbo.").Append(Table.Name).Append("Audit").Append("("); string Splitter = ""; foreach (Utilities.SQL.DataClasses.Interfaces.IColumn Column in Table.Columns) { Columns.Append(Splitter).Append(Column.Name); Splitter = ","; } Builder.Append(Columns.ToString()); Builder.Append(",AuditType) SELECT "); Builder.Append(Columns.ToString()); Builder.Append(",@AuditType FROM inserted"); Table.AddTrigger(Table.Name + "_Audit_IU", Builder.ToString(), TriggerType.INSERT); }