/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { #line 7 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" EntityConnectionStringBuilder connectionStringBuilder = Generator.GetEntityConnectionStringBuilder(_params); AuditFrameworkEntities context = new AuditFrameworkEntities(connectionStringBuilder.ToString()); SchemaDataSet schemaDataSet = _params.SchemaDataSet; SchemaDataSet.SchemaPrimaryKeysDataTable primaryKeysTable = schemaDataSet.SchemaPrimaryKeys; EnumerableRowCollection <SchemaDataSet.SchemaPrimaryKeysRow> primaryKeysRows = primaryKeysTable.AsEnumerable(); var primaryKeysQuery = from primaryKeysRow in primaryKeysRows where primaryKeysRow.TABLE_SCHEMA.Equals(_schema, StringComparison.OrdinalIgnoreCase) where primaryKeysRow.TABLE_NAME.Equals(_targetTableName, StringComparison.OrdinalIgnoreCase) select primaryKeysRow; #line default #line hidden this.Write("IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N\'["); #line 19 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[Instantº"); #line 19 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_schema)); #line default #line hidden this.Write("º"); #line 19 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_targetTableName)); #line default #line hidden this.Write("]\') AND type IN (N\'P\', N\'PC\'))\r\n DROP PROCEDURE ["); #line 20 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[Instantº"); #line 20 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_schema)); #line default #line hidden this.Write("º"); #line 20 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_targetTableName)); #line default #line hidden this.Write("];\r\nGO\r\n\r\nCREATE PROCEDURE ["); #line 23 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[Instantº"); #line 23 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_schema)); #line default #line hidden this.Write("º"); #line 23 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_targetTableName)); #line default #line hidden this.Write("]\r\n @AuditºTimestampUtc [DATETIME]\r\n, @TrackºId\t\t\t\t[BIGINT] OUTPUT\r\n"); #line 26 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" foreach (SchemaDataSet.SchemaPrimaryKeysRow primaryKeysRow in primaryKeysQuery) { #line default #line hidden this.Write(", @"); #line 29 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write(" "); #line 29 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(SchemaHelper.DataTypeWithDetail(primaryKeysRow, schemaDataSet.Columns))); #line default #line hidden this.Write("\r\n"); #line 30 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" } #line default #line hidden this.Write(@"AS /* READ THIS BEFORE EDITING THIS CODE ---------------------------------- This code was automatically generated by the CodeCharm.Model.AuditFramework project. If you modify this code, and then execute the AuditFramework tool, your modifications will be ignored and overwritten. Template: CreateInstantTrackIdProcedure.tt REMARKS ------- This procedure finds the most recent TrackId for the audited record which has the primary keys provided by the caller. If the action of the most recent audit was a delete, go to the PriorTrackId of the found record in order to get data that is meaningful. */ SET NOCOUNT ON; -- Find the TrackId of the most recent track/delta record in the tracking table(s) that matches the primary key(s) "); #line 59 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" if (schemaDataSet.SchemaTables.TableExists(_params.AuditingSchema, "Catalog")) { var priorVersionTrackingTableQuery = from catalog in context.Catalogs where catalog.AuditedSchema.Equals(_schema, StringComparison.OrdinalIgnoreCase) where catalog.AuditedTableName.Equals(_targetTableName, StringComparison.OrdinalIgnoreCase) orderby catalog.Version descending select catalog; foreach (Catalog catalog in priorVersionTrackingTableQuery) { #line default #line hidden this.Write(" SELECT TOP 1 \r\n @TrackºId = [M].[TrackºId]\r\n FROM [" + ""); #line 71 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].["); #line 71 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(new TrackingTable(catalog.AuditedSchema, catalog.AuditedTableName, catalog.Version).ToString())); #line default #line hidden this.Write("] AS [T]\r\n INNER JOIN ["); #line 72 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[AuditMaster] AS [M]\r\n ON [M].[TrackºId] = [T].[TrackºId]\r\n" + " WHERE [M].[TimestampUtc] < @AuditºTimestampUtc\r\n"); #line 75 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" foreach (SchemaDataSet.SchemaPrimaryKeysRow primaryKeysRow in primaryKeysQuery) { #line default #line hidden this.Write(" AND [T].["); #line 77 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write("] = @"); #line 77 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write("\r\n"); #line 78 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" } #line default #line hidden this.Write(" ORDER BY [M].[TrackºId] DESC;\r\n\r\n"); #line 81 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" if (catalog.Version > 0) { #line default #line hidden this.Write(" IF @TrackºId IS NOT NULL\r\n RETURN; \r\n\t\t\r\n"); #line 86 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" } } } else { #line default #line hidden this.Write(" SELECT TOP 1 \r\n @TrackºId = [M].[TrackºId]\r\n FROM [" + ""); #line 93 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].["); #line 93 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(new TrackingTable(_schema, _targetTableName, 0).ToString())); #line default #line hidden this.Write("] AS [T]\r\n INNER JOIN ["); #line 94 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[AuditMaster] AS [M]\r\n ON [M].[TrackºId] = [T].[TrackºId]\r\n" + " WHERE [M].[TimestampUtc] < @AuditºTimestampUtc\r\n"); #line 97 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" foreach (SchemaDataSet.SchemaPrimaryKeysRow primaryKeysRow in primaryKeysQuery) { #line default #line hidden this.Write(" AND [T].["); #line 99 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write("] = @"); #line 99 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write("\r\n"); #line 100 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" } #line default #line hidden this.Write(" ORDER BY [M].[TrackºId] DESC;\r\n"); #line 102 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateInstantTrackIdProcedure.tt" } #line default #line hidden this.Write("\r\nGO\r\n"); return(this.GenerationEnvironment.ToString()); }
/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { this.Write("\r\n"); #line 9 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" string currentVersionTrackIdName = _currentTrackingTable.ToString() + "ºTrackºId"; bool first; SchemaDataSet schemaDataSet = _params.SchemaDataSet; SchemaDataSet.SchemaPrimaryKeysDataTable primaryKeysTable = schemaDataSet.SchemaPrimaryKeys; EnumerableRowCollection <SchemaDataSet.SchemaPrimaryKeysRow> primaryKeysRows = primaryKeysTable.AsEnumerable(); var primaryKeysQuery = from primaryKeysRow in primaryKeysRows where primaryKeysRow.TABLE_SCHEMA.Equals(_schema, StringComparison.OrdinalIgnoreCase) where primaryKeysRow.TABLE_NAME.Equals(_tableName, StringComparison.OrdinalIgnoreCase) select primaryKeysRow; #line default #line hidden this.Write("IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N\'["); #line 23 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[Deltaº"); #line 23 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_priorTrackingTable.ToString())); #line default #line hidden this.Write("]\') AND type IN (N\'P\', N\'PC\'))\r\n DROP PROCEDURE ["); #line 24 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[Deltaº"); #line 24 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_priorTrackingTable.ToString())); #line default #line hidden this.Write("];\r\nGO\r\n\r\nCREATE PROCEDURE ["); #line 27 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[Deltaº"); #line 27 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_priorTrackingTable.ToString())); #line default #line hidden this.Write("]\r\n @"); #line 28 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(currentVersionTrackIdName)); #line default #line hidden this.Write(" [BIGINT]\r\n, @PriorºTrackId [BIGINT] = NULL OUTPUT\r\n, @AnyDelta \t\t[BIT] = " + "0 OUTPUT\r\n"); #line 31 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" foreach (SchemaDataSet.SchemaPrimaryKeysRow primaryKeysRow in primaryKeysQuery) { #line default #line hidden this.Write(", @PKº"); #line 34 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write(" "); #line 34 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(SchemaHelper.DataTypeWithDetail(primaryKeysRow, schemaDataSet.Columns))); #line default #line hidden this.Write("\r\n"); #line 35 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" } #line default #line hidden this.Write("AS\r\n\r\n/*\r\n READ THIS BEFORE EDITING THIS CODE\r\n ---------------------------" + "-------\r\n This code was automatically generated by the\r\n CodeCharm.Model.A" + "uditFramework\r\n project.\r\n \r\n If you modify this code, and then execute" + " \r\n the AuditFramework tool, your modifications\r\n will be ignored and over" + "written.\r\n \r\n Template: CreateUpdateDeltaPriorTableProcedure.tt\r\n \r\n " + " REMARKS\r\n -------\r\n This procedure is not meant to be called by users or " + "applications\r\n directly. It is only meant to be called by other Delta* proced" + "ures.\r\n \r\n This procedure creates a Delta record (in the tables with the Δ" + " symbol).\r\n A Delta record contains a bitmask showing which fields have \r\n " + " changed since the last recorded values of the fields.\r\n \r\n This procedure" + " must compare the current track record, using the current schema \r\n version, " + "against an earlier schema versions. Where the schema\r\n has mismatched fields " + "(a field exists in the current version of the schema \r\n but not the earlier)," + " the missing field is treated as a NULL and compared \r\n against the existing " + "field. If a field exists in an earlier version but not\r\n\tthe current version, it" + " is ignored (there is no place to store the bit).\r\n*/\r\n\r\n\tSET NOCOUNT ON;\r\n\t\r\n " + " -- Find the TrackId of the most recent track/delta record (has PriorTrackId) i" + "n the current tracking table that matches the primary keys of this entry\r\n\r\n " + "SELECT TOP 1 @PriorºTrackId = [M].[TrackºId]\r\n FROM ["); #line 74 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].["); #line 74 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_priorTrackingTable.ToString())); #line default #line hidden this.Write("] AS [T]\r\n INNER JOIN ["); #line 75 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[AuditMaster] AS [M]\r\n ON [M].[TrackºId] = [T].[TrackºId]\r\n" + " WHERE [M].[TrackºId] < @"); #line 77 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(currentVersionTrackIdName)); #line default #line hidden this.Write("\r\n"); #line 78 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" foreach (SchemaDataSet.SchemaPrimaryKeysRow primaryKeysRow in primaryKeysQuery) { #line default #line hidden this.Write(" AND [T].["); #line 81 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write("] = @PKº"); #line 81 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write("\r\n"); #line 82 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" } #line default #line hidden this.Write(@" ORDER BY [M].[TrackºId] DESC; -- Exit quickly if we did not find the earlier version in this version of the tracking table IF (@PriorºTrackId IS NULL) RETURN; -- Compare fields of that track record to the current track record and create the delta record -- Variables to store values for comparison "); #line 93 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" foreach (SchemaDataSet.ColumnsRow targetColumn in _targetTableColumns) { #line default #line hidden this.Write(" DECLARE @"); #line 96 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write(" "); #line 96 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(SchemaHelper.DataTypeAsVariable(targetColumn))); #line default #line hidden this.Write(";\r\n DECLARE @Priorº"); #line 97 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write(" "); #line 97 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(SchemaHelper.DataTypeAsVariable(targetColumn))); #line default #line hidden this.Write(";\r\n DECLARE @Deltaº"); #line 98 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write(" [BIT];\r\n \r\n"); #line 100 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" } #line default #line hidden this.Write(" \r\n \r\n -- Get the values of the current record\r\n SELECT\r\n"); #line 105 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" first = true; PushIndent(" "); foreach (SchemaDataSet.ColumnsRow targetColumn in _targetTableColumns) { Write(first ? " " : ", "); WriteLine("@" + targetColumn.COLUMN_NAME + " = [" + targetColumn.COLUMN_NAME + "]"); first = false; } PopIndent(); #line default #line hidden this.Write(" FROM "); #line 116 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_currentTrackingTable.ToString())); #line default #line hidden this.Write("\r\n WHERE [TrackºId] = @"); #line 117 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(currentVersionTrackIdName)); #line default #line hidden this.Write(";\r\n\r\n -- Get Prior values for comparison (only those that are in the current s" + "chema)\r\n SELECT\r\n"); #line 121 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" List <string> priorTableColumnsList = (from column in schemaDataSet.Columns where column.TABLE_SCHEMA.Equals(_params.AuditingSchema, StringComparison.OrdinalIgnoreCase) where column.TABLE_NAME.Equals(_priorTrackingTable.ToString(), StringComparison.OrdinalIgnoreCase) select column.COLUMN_NAME).ToList(); first = true; PushIndent(" "); foreach (SchemaDataSet.ColumnsRow targetColumn in _targetTableColumns) { if (priorTableColumnsList.Contains(targetColumn.COLUMN_NAME, StringComparer.OrdinalIgnoreCase)) { Write(first ? " " : ", "); WriteLine("@Priorº" + targetColumn.COLUMN_NAME + " = [" + targetColumn.COLUMN_NAME + "]"); first = false; } } PopIndent(); #line default #line hidden this.Write(" FROM "); #line 140 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_priorTrackingTable.ToString())); #line default #line hidden this.Write("\r\n WHERE [TrackºId] = @PriorºTrackId;\r\n \r\n -- Set Delta bits\r\n" + ""); #line 144 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" foreach (SchemaDataSet.ColumnsRow targetColumn in _targetTableColumns) { #line default #line hidden this.Write(" SET @Deltaº"); #line 147 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write(" = CASE WHEN (@"); #line 147 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write(" IS NULL AND @Priorº"); #line 147 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write(" IS NULL) OR (@"); #line 147 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write(" = @Priorº"); #line 147 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden #line 147 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(SchemaHelper.IsStringDataType(targetColumn) ? " COLLATE Latin1_General_BIN" : string.Empty)); #line default #line hidden this.Write(" ) THEN 0 ELSE 1 END;\r\n\tSET @AnyDelta = CONVERT(BIT, CONVERT(INT, @AnyDelta) | CO" + "NVERT(INT, @Deltaº"); #line 148 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write("));\r\n\t\r\n"); #line 150 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" } #line default #line hidden this.Write("\r\n -- Set bits for record with current version schema\r\n INSERT ["); #line 154 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].["); #line 154 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_currentTrackingTable.ToString())); #line default #line hidden this.Write("Δ]\r\n (\r\n [TrackºId]\r\n"); #line 157 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" foreach (SchemaDataSet.ColumnsRow targetColumn in _targetTableColumns) { #line default #line hidden this.Write(" , ["); #line 159 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write("]\r\n"); #line 160 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" } #line default #line hidden this.Write(" )\r\n VALUES\r\n (\r\n @"); #line 165 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(currentVersionTrackIdName)); #line default #line hidden this.Write(" \r\n"); #line 166 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" foreach (SchemaDataSet.ColumnsRow targetColumn in _targetTableColumns) { #line default #line hidden this.Write(" , @Deltaº"); #line 169 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write("\r\n"); #line 170 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaPriorTableProcedure.tt" } #line default #line hidden this.Write(" \r\n );\r\n \r\nGO\r\n"); return(this.GenerationEnvironment.ToString()); }
/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { this.Write("\r\n"); #line 5 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" SchemaDataSet schemaDataSet = _params.SchemaDataSet; SchemaDataSet.SchemaPrimaryKeysDataTable primaryKeysTable = schemaDataSet.SchemaPrimaryKeys; EnumerableRowCollection <SchemaDataSet.SchemaPrimaryKeysRow> primaryKeysRows = primaryKeysTable.AsEnumerable(); var primaryKeysQuery = from primaryKeysRow in primaryKeysRows where primaryKeysRow.TABLE_SCHEMA.Equals(_schema, StringComparison.OrdinalIgnoreCase) where primaryKeysRow.TABLE_NAME.Equals(_tableName, StringComparison.OrdinalIgnoreCase) select primaryKeysRow; #line default #line hidden this.Write("\r\nSET NOCOUNT ON;\r\n\r\nBEGIN TRY\r\n\tBEGIN TRANSACTION;\r\n\tSAVE TRANSACTION "); #line 19 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("ºBuildDelta;\r\n\r\n\tDECLARE @TrackºId \t\t\t\t\t[BIGINT];\r\n\tDECLARE @AuditºTimeStampUtc \t" + "\t[DATETIME];\r\n\tDECLARE @AuditºTransactionSequence [BIGINT];\r\n\tDECLARE @AuditºTr" + "ansactionDepth [INT];\r\n\tDECLARE @BaselineºCounter \t\t\t[BIGINT];\r\n\r\n\tEXECUTE [" + ""); #line 27 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[RequestTransactionSequence] \r\n\t\t NULL\r\n\t\t, @AuditºTransactionSequence OUTPUT\r" + "\n\t\t, @AuditºTransactionDepth OUTPUT;\r\n\r\n\tSET @BaselineºCounter = 0;\r\n\r\n\t"); #line 34 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" foreach (SchemaDataSet.SchemaPrimaryKeysRow primaryKeysRow in primaryKeysQuery) { #line default #line hidden this.Write("\tDECLARE @PKº"); #line 36 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write(" "); #line 36 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(SchemaHelper.DataTypeWithDetail(primaryKeysRow, schemaDataSet.Columns))); #line default #line hidden this.Write(";\r\n\t"); #line 37 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" } #line default #line hidden this.Write("\r\n\t"); #line 40 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" string cursorName = string.Format("{0}º{1}ºCursor", _schema, _tableName); #line default #line hidden this.Write("\tDECLARE "); #line 43 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(cursorName)); #line default #line hidden this.Write(" CURSOR LOCAL\r\n\t\tFAST_FORWARD\r\n\t\tFOR\tSELECT\r\n\t"); #line 46 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" bool first = true; foreach (SchemaDataSet.SchemaPrimaryKeysRow primaryKeysRow in primaryKeysQuery) { if (!first) { Write(", "); } Write("[" + primaryKeysRow.COLUMN_NAME + "]"); first = false; } #line default #line hidden this.Write("\t\t\tFROM\t["); #line 57 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_schema)); #line default #line hidden this.Write("].["); #line 57 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_tableName)); #line default #line hidden this.Write("];\r\n\r\n\tOPEN \t"); #line 59 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(cursorName)); #line default #line hidden this.Write(";\r\n\r\n\tFETCH NEXT FROM "); #line 61 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(cursorName)); #line default #line hidden this.Write("\r\n\t\tINTO "); #line 62 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" first = true; foreach (SchemaDataSet.SchemaPrimaryKeysRow primaryKeysRow in primaryKeysQuery) { if (!first) { Write(", "); } Write("@PKº" + primaryKeysRow.COLUMN_NAME); first = false; } #line default #line hidden this.Write(";\r\n\r\n\tWHILE @@FETCH_STATUS = 0\r\n\tBEGIN\r\n\r\n\t\tEXECUTE ["); #line 77 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[Trackº"); #line 77 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_schema)); #line default #line hidden this.Write("º"); #line 77 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_tableName)); #line default #line hidden this.Write("]\r\n\t\t @AuditºTransactionSequence = @AuditºTransactionSequence\r\n\t\t, @AuditºTransa" + "ctionDepth = @AuditºTransactionDepth\r\n\t\t, @AuditºAction = \'B\'\r\n\t\t, @TrackºId = @" + "TrackºId OUTPUT\r\n\t\t, @AuditºTimeStampUtc = NULL\r\n\t\t, @AuditºDesignatedUserId = N" + "ULL\r\n\t"); #line 84 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" foreach (SchemaDataSet.SchemaPrimaryKeysRow primaryKeysRow in primaryKeysQuery) { #line default #line hidden this.Write("\t\t, @"); #line 86 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write(" = @PKº"); #line 86 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write("\r\n\t"); #line 87 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" } #line default #line hidden this.Write("\t\t;\r\n\t\r\n\t\tINSERT ["); #line 90 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].["); #line 90 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_trackingTable.ToString())); #line default #line hidden this.Write("Δ]\r\n (\r\n [TrackºId]\r\n"); #line 93 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" foreach (SchemaDataSet.ColumnsRow targetColumn in _targetTableColumns) { #line default #line hidden this.Write(" , ["); #line 96 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write("]\r\n"); #line 97 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" } #line default #line hidden this.Write(" \r\n )\r\n VALUES\r\n (\r\n @TrackºId\r\n"); #line 103 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" foreach (SchemaDataSet.ColumnsRow targetColumn in _targetTableColumns) { #line default #line hidden this.Write(" , 0\r\n"); #line 107 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" } #line default #line hidden this.Write(" \r\n );\r\n\r\n\t\tSET @BaselineºCounter = @BaselineºCounter + 1;\r\n\t\tIF " + "@BaselineºCounter % 1000 = 0\r\n\t\tBEGIN\r\n\t\t\tPRINT (CAST(@BaselineºCounter AS [NVAR" + "CHAR](16)));\r\n\t\tEND\r\n\t\t\r\n\t\tFETCH NEXT FROM "); #line 117 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(cursorName)); #line default #line hidden this.Write("\r\n\t\t\tINTO "); #line 118 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" first = true; foreach (SchemaDataSet.SchemaPrimaryKeysRow primaryKeysRow in primaryKeysQuery) { if (!first) { Write(", "); } Write("@PKº" + primaryKeysRow.COLUMN_NAME); first = false; } #line default #line hidden this.Write(";\r\n\r\n\tEND;\r\n\r\n\tCLOSE\t"); #line 133 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(cursorName)); #line default #line hidden this.Write(";\r\n\tDEALLOCATE\t"); #line 134 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(cursorName)); #line default #line hidden this.Write(";\r\n\r\n\tUPDATE\t["); #line 136 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[AuditMaster]\r\n\t\tSET\t[PriorTrackºId] = [TrackºId]\r\n\t\tWHERE\t[Action] = \'B\'\r\n\t\t\tA" + "ND\t[TrackTableVersionName] = \'"); #line 139 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_trackingTable.ToString())); #line default #line hidden this.Write("\';\r\n\r\n\tCOMMIT TRANSACTION;\r\n\r\n\tEXECUTE ["); #line 143 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write(@"].[ReleaseTransactionSequence] @AuditºTransactionSequence , @AuditºTransactionDepth; PRINT (CAST(@BaselineºCounter AS [NVARCHAR](16)) + ' records baselined'); END TRY BEGIN CATCH DECLARE @ErrorMessage NVARCHAR(4000) , @ErrorNumber INT , @ErrorSeverity INT , @ErrorState INT , @ErrorLine INT , @ErrorProcedure NVARCHAR(200); -- Assign variables to error-handling functions that -- capture information for RAISERROR. SELECT @ErrorNumber = ERROR_NUMBER() , @ErrorSeverity = ERROR_SEVERITY() , @ErrorState = ERROR_STATE() , @ErrorLine = ERROR_LINE() , @ErrorProcedure = ISNULL(ERROR_PROCEDURE(), '-'); IF XACT_STATE() = -1 -- uncommittable BEGIN ROLLBACK TRANSACTION " ); #line 167 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\SetBaseline.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write(@"ºBuildDelta; END; IF XACT_STATE() = 1 -- committable BEGIN COMMIT TRANSACTION; END; -- Build the message string that will contain original -- error information. SELECT @ErrorMessage = N'Error %d, Level %d, State %d, Procedure %s, Line %d, Message: '+ ERROR_MESSAGE(); IF @ErrorState = 0 SET @ErrorState = 1; -- Raise an error: msg_str parameter of RAISERROR will contain -- the original error information. RAISERROR ( @ErrorMessage , @ErrorSeverity , 1 , @ErrorNumber -- parameter: original error number. , @ErrorSeverity -- parameter: original error severity. , @ErrorState -- parameter: original error state. , @ErrorProcedure -- parameter: original error procedure name. , @ErrorLine -- parameter: original error line number. ); END CATCH; GO "); return(this.GenerationEnvironment.ToString()); }
/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { this.Write("\r\n"); #line 6 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" SchemaDataSet schemaDataSet = _params.SchemaDataSet; SchemaDataSet.SchemaPrimaryKeysDataTable primaryKeysTable = schemaDataSet.SchemaPrimaryKeys; EnumerableRowCollection <SchemaDataSet.SchemaPrimaryKeysRow> primaryKeysRows = primaryKeysTable.AsEnumerable(); var primaryKeysQuery = from primaryKeysRow in primaryKeysRows where primaryKeysRow.TABLE_SCHEMA.Equals(_schema, StringComparison.OrdinalIgnoreCase) where primaryKeysRow.TABLE_NAME.Equals(_auditedTable, StringComparison.OrdinalIgnoreCase) select primaryKeysRow; var schemaTableName = _schema + "º" + _auditedTable; var transactionName = schemaTableName.Length > 32 ? schemaTableName.Substring(0, 32) : schemaTableName; #line default #line hidden this.Write("IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N\'["); #line 17 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[Trackº"); #line 17 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_schema)); #line default #line hidden this.Write("º"); #line 17 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_auditedTable)); #line default #line hidden this.Write("]\') AND type IN (N\'P\', N\'PC\'))\r\n DROP PROCEDURE ["); #line 18 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[Trackº"); #line 18 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_schema)); #line default #line hidden this.Write("º"); #line 18 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_auditedTable)); #line default #line hidden this.Write("];\r\nGO\r\n\r\nCREATE PROCEDURE ["); #line 21 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[Trackº"); #line 21 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_schema)); #line default #line hidden this.Write("º"); #line 21 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_auditedTable)); #line default #line hidden this.Write(@"] @AuditºTransactionSequence BIGINT , @AuditºTransactionDepth INT , @AuditºAction CHAR(1) , @TrackºId BIGINT OUTPUT , @AuditºTimeStampUtc DATETIME OUTPUT , @AuditºDesignatedUserId SYSNAME "); #line 29 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" foreach (SchemaDataSet.SchemaPrimaryKeysRow primaryKeysRow in primaryKeysQuery) { #line default #line hidden this.Write(", @"); #line 31 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write(" "); #line 31 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(SchemaHelper.DataTypeWithDetail(primaryKeysRow, schemaDataSet.Columns))); #line default #line hidden this.Write("\r\n"); #line 32 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" } #line default #line hidden this.Write(@"AS BEGIN /* READ THIS BEFORE EDITING THIS CODE ---------------------------------- This code was automatically generated by the CodeCharm.Model.AuditFramework project. If you modify this code, and then execute the AuditFramework tool, your modifications will be ignored and overwritten. Template: CreateTrackingInsertProcedure.tt */ SET NOCOUNT ON; DECLARE @Error INT; BEGIN TRY BEGIN TRANSACTION; SAVE TRANSACTION " ); #line 56 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(transactionName)); #line default #line hidden this.Write(@"; DECLARE @AuditºTransactionSequenceInt [BIGINT]; DECLARE @AuditºIsLocalTransactionSequence [BIT]; SET @AuditºTransactionSequenceInt = ISNULL(@AuditºTransactionSequence, 0); SET @AuditºIsLocalTransactionSequence = ~ CONVERT(BIT, @AuditºTransactionSequenceInt); IF @AuditºIsLocalTransactionSequence <> 0 BEGIN EXECUTE [" ); #line 66 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write(@"].[RequestTransactionSequence] NULL , @AuditºTransactionSequence OUTPUT , @AuditºTransactionDepth OUTPUT; END; -- Create the audit record first to get the TrackId value SET @AuditºTimeStampUtc = ISNULL(@AuditºTimeStampUtc, GETUTCDATE()); INSERT INTO [" ); #line 76 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write(@"].[AuditMaster] ( [ServerId] , [TransactionSequence] , [TransactionDepth] , [Action] , [AuditedTableName] , [TrackTableVersionName] , [TimestampUtc] , [ConnectionUserId] , [DesignatedUserId] , [PriorTrackºId] ) VALUES ( CONVERT(SYSNAME, SERVERPROPERTY('ServerName')) , @AuditºTransactionSequence , @AuditºTransactionDepth , @AuditºAction , '[" ); #line 95 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_schema)); #line default #line hidden this.Write("].["); #line 95 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_auditedTable)); #line default #line hidden this.Write("]\'\r\n\t , \'"); #line 96 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_trackingTableName)); #line default #line hidden this.Write(@"' -- Tracking Table Name , @AuditºTimestampUtc , SYSTEM_USER , @AuditºDesignatedUserId , NULL ); SET @TrackºId = SCOPE_IDENTITY(); -- Record the changes in the Tracking table IF @AuditºAction = 'D' BEGIN INSERT INTO [" ); #line 109 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].["); #line 109 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_trackingTableName)); #line default #line hidden this.Write("]\r\n\t (\r\n\t [TrackºId]\r\n\t"); #line 112 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" foreach (SchemaDataSet.ColumnsRow columnsRow in _targetTableColumns) { #line default #line hidden this.Write("\t , ["); #line 114 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(columnsRow.COLUMN_NAME)); #line default #line hidden this.Write("]\r\n\t"); #line 115 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" } #line default #line hidden this.Write("\t )\r\n\t VALUES\r\n\t (\r\n\t @TrackºId\r\n\t"); #line 121 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" PushIndent(" "); foreach (SchemaDataSet.ColumnsRow columnsRow in _targetTableColumns) { SchemaDataSet.ColumnsRow row = columnsRow; if (primaryKeysQuery.Any(primaryKeysRow => primaryKeysRow.COLUMN_NAME.Equals(row.COLUMN_NAME, StringComparison.OrdinalIgnoreCase))) { WriteLine(", @" + row.COLUMN_NAME); } else { WriteLine(", NULL"); } } PopIndent(); #line default #line hidden this.Write("\t );\r\n\t END\r\n\t ELSE\r\n\t BEGIN\r\n\t INSERT INTO ["); #line 141 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].["); #line 141 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_trackingTableName)); #line default #line hidden this.Write("]\r\n\t (\r\n\t [TrackºId]\r\n\t"); #line 144 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" foreach (SchemaDataSet.ColumnsRow columnsRow in _targetTableColumns) { #line default #line hidden this.Write("\t , ["); #line 146 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(columnsRow.COLUMN_NAME)); #line default #line hidden this.Write("]\r\n\t"); #line 147 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" } #line default #line hidden this.Write("\t )\r\n\t SELECT \r\n\t @TrackºId\r\n\t"); #line 152 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" foreach (SchemaDataSet.ColumnsRow columnsRow in _targetTableColumns) { #line default #line hidden this.Write("\t , ["); #line 154 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(columnsRow.COLUMN_NAME)); #line default #line hidden this.Write("]\r\n\t"); #line 155 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" } #line default #line hidden this.Write("\t FROM ["); #line 157 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_schema)); #line default #line hidden this.Write("].["); #line 157 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_auditedTable)); #line default #line hidden this.Write("]\r\n\t WHERE\r\n\t-- primary key values match arguments\r\n\t"); #line 160 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" PushIndent(" "); bool first = true; foreach (SchemaDataSet.SchemaPrimaryKeysRow primaryKeysRow in primaryKeysQuery) { if (!first) { Write("AND "); } else { Write(" "); } WriteLine("[{0}] = @{0}", primaryKeysRow.COLUMN_NAME); first = false; } PopIndent(); #line default #line hidden this.Write("\t\t\t\t\t;\r\n\t\t\t\t\r\n\t END;\r\n\t \r\n\t IF @AuditºIsLocalTransactionSequence <> 0\r\n\t" + " BEGIN\r\n\t EXECUTE ["); #line 183 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write(@"].[ReleaseTransactionSequence] @AuditºTransactionSequence , @AuditºTransactionDepth; END COMMIT TRANSACTION; END TRY BEGIN CATCH DECLARE @ErrorMessage NVARCHAR(4000) , @ErrorNumber INT , @ErrorSeverity INT , @ErrorState INT , @ErrorLine INT , @ErrorProcedure NVARCHAR(200); -- Assign variables to error-handling functions that -- capture information for RAISERROR. SELECT @ErrorNumber = ERROR_NUMBER() , @ErrorSeverity = ERROR_SEVERITY() , @ErrorState = ERROR_STATE() , @ErrorLine = ERROR_LINE() , @ErrorProcedure = ISNULL(ERROR_PROCEDURE(), '-'); IF XACT_STATE() = -1 -- uncommittable BEGIN ROLLBACK TRANSACTION " ); #line 208 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateTrackingInsertProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(transactionName)); #line default #line hidden this.Write(@"; END; IF XACT_STATE() = 1 -- committable BEGIN COMMIT TRANSACTION; END; -- Build the message string that will contain original -- error information. SELECT @ErrorMessage = N'Error %d, Level %d, State %d, Procedure %s, Line %d, Message: '+ ERROR_MESSAGE(); IF @ErrorState = 0 SET @ErrorState = 1; -- Raise an error: msg_str parameter of RAISERROR will contain -- the original error information. RAISERROR ( @ErrorMessage , @ErrorSeverity , 1 , @ErrorNumber -- parameter: original error number. , @ErrorSeverity -- parameter: original error severity. , @ErrorState -- parameter: original error state. , @ErrorProcedure -- parameter: original error procedure name. , @ErrorLine -- parameter: original error line number. ); END CATCH END GO "); return(this.GenerationEnvironment.ToString()); }