コード例 #1
0
 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,
                             "",
                             "",
                             "");
         }
     }
 }
コード例 #2
0
 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);
 }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }