private static void GenerateBuildDeltaProcedures(string schema, string tableName, TrackingTable trackingTable, List<SchemaDataSet.ColumnsRow> targetTableColumns, StringBuilder sqlBuilder, AuditUpdateParameters updateParameters) { CreateUpdateDeltaTableProcedure createUpdateDeltaTableProcedureTemplate = new CreateUpdateDeltaTableProcedure(schema, tableName, trackingTable, targetTableColumns, updateParameters); string sql = createUpdateDeltaTableProcedureTemplate.TransformText(); sqlBuilder.AppendLine(sql); SchemaDataSet schemaDataSet = updateParameters.SchemaDataSet; if (schemaDataSet.SchemaTables.TableExists(updateParameters.AuditingSchema, "Catalog")) { EntityConnectionStringBuilder connectionStringBuilder = Generator.GetEntityConnectionStringBuilder(updateParameters); AuditFrameworkEntities context = new AuditFrameworkEntities(connectionStringBuilder.ToString()); IOrderedQueryable<Catalog> priorVersionTrackingTableQuery = from catalog in context.Catalogs where catalog.AuditedSchema.Equals(schema, StringComparison.OrdinalIgnoreCase) where catalog.AuditedTableName.Equals(tableName, StringComparison.OrdinalIgnoreCase) where catalog.Version < trackingTable.Version where !catalog.Archived orderby catalog.Version descending select catalog; foreach (Catalog catalog in priorVersionTrackingTableQuery) { TrackingTable priorTrackingTable = TrackingTable.Parse(catalog.AuditingTableName); CreateUpdateDeltaPriorTableProcedure createUpdateDeltaPriorTableProcedureTemplate =new CreateUpdateDeltaPriorTableProcedure(schema, tableName, trackingTable, priorTrackingTable, targetTableColumns, updateParameters); sql = createUpdateDeltaPriorTableProcedureTemplate.TransformText(); sqlBuilder.AppendLine(sql); } } }
internal static TrackingTable GenerateNewTrackingTable(string schema, string tableName, List<SchemaDataSet.ColumnsRow> targetTableColumns, AuditUpdateParameters updateParameters, StringBuilder sqlBuilder, Action<string, float?> reportProgress) { int version; SchemaDataSet schemaDataSet = updateParameters.SchemaDataSet; if (schemaDataSet.SchemaTables.TableExists(updateParameters.AuditingSchema, "Catalog")) { EntityConnectionStringBuilder connectionStringBuilder = Generator.GetEntityConnectionStringBuilder(updateParameters); AuditFrameworkEntities context = new AuditFrameworkEntities(connectionStringBuilder.ToString()); var catalogQuery = from catalog in context.Catalogs where catalog.AuditedSchema.Equals(schema, StringComparison.OrdinalIgnoreCase) && catalog.AuditedTableName.Equals(tableName, StringComparison.OrdinalIgnoreCase) orderby catalog.Version descending select catalog; var latestCatalog = catalogQuery.FirstOrDefault(); if (null == latestCatalog) { version = 0; } else { version = latestCatalog.Version + 1; } } else { version = 0; } TrackingTable trackingTable = new TrackingTable(schema, tableName, version); string trackingTableName = trackingTable.ToString(); InsertCatalog insertCatalogTemplate = new InsertCatalog(schema, tableName, version, updateParameters.AuditingSchema, trackingTableName); string sql = insertCatalogTemplate.TransformText(); sqlBuilder.AppendLine(sql); CreateTrackingTable createTrackingTableTemplate = new CreateTrackingTable(schema, tableName, trackingTableName, targetTableColumns, updateParameters); sql = createTrackingTableTemplate.TransformText(); sqlBuilder.AppendLine(sql); return trackingTable; }
internal static TrackingTable GetCurrentTrackingTable(string schema, string tableName, AuditUpdateParameters updateParameters) { SchemaDataSet schemaDataSet = updateParameters.SchemaDataSet; if (schemaDataSet.SchemaTables.TableExists(updateParameters.AuditingSchema, "Catalog")) { EntityConnectionStringBuilder connectionStringBuilder = Generator.GetEntityConnectionStringBuilder(updateParameters); AuditFrameworkEntities context = new AuditFrameworkEntities(connectionStringBuilder.ToString()); var catalogQuery = from catalog in context.Catalogs where catalog.AuditedSchema.Equals(schema, StringComparison.OrdinalIgnoreCase) && catalog.AuditedTableName.Equals(tableName, StringComparison.OrdinalIgnoreCase) orderby catalog.Version descending select catalog; Catalog catalogRow = catalogQuery.FirstOrDefault(); if (null == catalogRow) { return null; } TrackingTable trackingTable = TrackingTable.Parse(catalogRow.AuditingTableName); return trackingTable; } return null; }
/// <summary> /// Create the template output /// </summary> public virtual string TransformText() { this.Write("\r\n"); #line 8 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" string currentVersionTrackIdName = _trackingTable.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; IOrderedQueryable<Catalog> priorVersionTrackingTableQuery = null; EntityConnectionStringBuilder connectionStringBuilder = Generator.GetEntityConnectionStringBuilder(_params); AuditFrameworkEntities context = new AuditFrameworkEntities(connectionStringBuilder.ToString()); if (schemaDataSet.SchemaTables.TableExists(_params.AuditingSchema, "Catalog")) { priorVersionTrackingTableQuery = from catalog in context.Catalogs where catalog.AuditedSchema.Equals(_schema, StringComparison.OrdinalIgnoreCase) where catalog.AuditedTableName.Equals(_tableName, StringComparison.OrdinalIgnoreCase) where catalog.Version < _trackingTable.Version where !catalog.Archived orderby catalog.Version descending select catalog; } #line default #line hidden this.Write("IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N\'["); #line 34 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[Deltaº"); #line 34 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_trackingTable.ToString())); #line default #line hidden this.Write("]\') AND type IN (N\'P\', N\'PC\'))\r\n DROP PROCEDURE ["); #line 35 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[Deltaº"); #line 35 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_trackingTable.ToString())); #line default #line hidden this.Write("];\r\nGO\r\n\r\nCREATE PROCEDURE ["); #line 38 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[Deltaº"); #line 38 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_trackingTable.ToString())); #line default #line hidden this.Write("]\r\n @"); #line 39 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(currentVersionTrackIdName)); #line default #line hidden this.Write(" [BIGINT]\r\n, @PriorºTrackId [BIGINT] = NULL OUTPUT\r\nAS\r\n\r\n/*\r\n READ THI" + "S BEFORE EDITING THIS CODE\r\n ----------------------------------\r\n This cod" + "e was automatically generated by the\r\n CodeCharm.Model.AuditFramework\r\n pr" + "oject.\r\n \r\n If you modify this code, and then execute \r\n the AuditFrame" + "work tool, your modifications\r\n will be ignored and overwritten.\r\n \r\n T" + "emplate: CreateUpdateDeltaTableProcedure.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 the BuildDelta procedure.\r\n \r\n This pro" + "cedure creates a Delta record (in the tables with the Δ symbol).\r\n A Delta re" + "cord contains a bitmask showing which fields have \r\n changed since the last r" + "ecorded values of the fields.\r\n \r\n A Baseline record will show all fields " + "as having not changed (all False).\r\n An Inserted or Deleted record will show " + "all fields as having changed (all True).\r\n Only the Updated records will show" + " the evaluated changes for each field.\r\n \r\n This procedure must compare th" + "e current track record, using the current schema \r\n version, against potentia" + "lly many earlier schema versions. Where the schema\r\n has mismatched fields (a" + " field exists in one version of the schema \r\n but not the other), the missing" + " field is treated as a NULL and compared \r\n against the existing field.\r\n*/\r\n" + "\r\n\t-- Track whether any changes were made at all\r\n\tDECLARE @AnyDelta [BIT]\r\n\tSET" + " @AnyDelta = 0\t\r\n\r\n -- Get the primary keys of this entry\r\n"); #line 81 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" foreach (SchemaDataSet.SchemaPrimaryKeysRow primaryKeysRow in primaryKeysQuery) { #line default #line hidden this.Write(" DECLARE @PKº"); #line 84 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write(" "); #line 84 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(SchemaHelper.DataTypeWithDetail(primaryKeysRow, schemaDataSet.Columns))); #line default #line hidden this.Write(";\r\n"); #line 85 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" } #line default #line hidden this.Write(" \r\n SELECT\r\n"); #line 89 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" first = true; PushIndent(" "); foreach(SchemaDataSet.SchemaPrimaryKeysRow primaryKeysRow in primaryKeysQuery) { Write(first ? " " : ", "); WriteLine("@PKº" + primaryKeysRow.COLUMN_NAME + " = [" + primaryKeysRow.COLUMN_NAME + "]"); first = false; } PopIndent(); #line default #line hidden this.Write(" FROM ["); #line 100 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].["); #line 100 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_trackingTable.ToString())); #line default #line hidden this.Write("]\r\n WHERE [TrackºId] = @"); #line 101 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(currentVersionTrackIdName)); #line default #line hidden this.Write(";\r\n \r\n DECLARE @CurrentºAction [NCHAR](1);\r\n SELECT @CurrentºAction" + " = [Action]\r\n FROM ["); #line 105 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[AuditMaster]\r\n WHERE [TrackºId] = @"); #line 106 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(currentVersionTrackIdName)); #line default #line hidden this.Write(";\r\n\r\n IF (@CurrentºAction = \'B\')\r\n BEGIN\r\n\t\t-- New baselines are always set" + " to all zeros\r\n\t\t-- to indicate no changes since previous entry (since there is " + "no previous entry)\r\n INSERT ["); #line 112 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].["); #line 112 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_trackingTable.ToString())); #line default #line hidden this.Write("Δ]\r\n (\r\n [TrackºId]\r\n"); #line 115 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" foreach (SchemaDataSet.ColumnsRow targetColumn in _targetTableColumns) { #line default #line hidden this.Write(" , ["); #line 118 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write("]\r\n"); #line 119 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" } #line default #line hidden this.Write(" \r\n )\r\n VALUES\r\n (\r\n @"); #line 124 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(currentVersionTrackIdName)); #line default #line hidden this.Write("\r\n"); #line 125 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" foreach (SchemaDataSet.ColumnsRow targetColumn in _targetTableColumns) { #line default #line hidden this.Write(" , 0\r\n"); #line 129 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" } #line default #line hidden this.Write(@" ); -- Even though we say that no changes happened in any fields, -- we always consider a baseline to be a change so that it appears in reports SET @AnyDelta = 1; END ELSE IF (@CurrentºAction = 'D' OR @CurrentºAction = 'I') BEGIN -- New Delete and new Insert actions are always set to all ones -- to indicate that every field has been set (for inserts) or removed (for deletes) INSERT ["); #line 141 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].["); #line 141 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_trackingTable.ToString())); #line default #line hidden this.Write("Δ]\r\n (\r\n [TrackºId]\r\n"); #line 144 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" foreach (SchemaDataSet.ColumnsRow targetColumn in _targetTableColumns) { #line default #line hidden this.Write(" , ["); #line 147 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write("]\r\n"); #line 148 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" } #line default #line hidden this.Write(" \r\n )\r\n VALUES\r\n (\r\n @"); #line 153 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(currentVersionTrackIdName)); #line default #line hidden this.Write("\r\n"); #line 154 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" foreach (SchemaDataSet.ColumnsRow targetColumn in _targetTableColumns) { #line default #line hidden this.Write(" , 1\r\n"); #line 158 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" } #line default #line hidden this.Write(@" ); SET @AnyDelta = 1; -- An Insert or Delete is always a change END ELSE BEGIN -- Process update action -- Find the TrackId of the most recent track/delta record in -- the CURRENT tracking table that matches the primary keys of this entry SELECT TOP 1 @PriorºTrackId = [M].[TrackºId] FROM ["); #line 172 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].["); #line 172 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_trackingTable.ToString())); #line default #line hidden this.Write("] AS [T]\r\n INNER JOIN ["); #line 173 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.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ºI" + "d]\r\n WHERE [M].[TrackºId] < @"); #line 175 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(currentVersionTrackIdName)); #line default #line hidden this.Write("\r\n"); #line 176 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" foreach (SchemaDataSet.SchemaPrimaryKeysRow primaryKeysRow in primaryKeysQuery) { #line default #line hidden this.Write(" AND [T].["); #line 179 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write("] = @PKº"); #line 179 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write("\r\n"); #line 180 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" } #line default #line hidden this.Write(@" ORDER BY [M].[TrackºId] DESC; -- If found, compare fields of that track record to the current track record and create the delta record, then return IF (@PriorºTrackId IS NOT NULL) BEGIN -- Variables to store values for comparison "); #line 188 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" foreach (SchemaDataSet.ColumnsRow targetColumn in _targetTableColumns) { #line default #line hidden this.Write(" DECLARE @"); #line 191 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write(" "); #line 191 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(SchemaHelper.DataTypeAsVariable(targetColumn))); #line default #line hidden this.Write(";\r\n DECLARE @Priorº"); #line 192 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write(" "); #line 192 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(SchemaHelper.DataTypeAsVariable(targetColumn))); #line default #line hidden this.Write(";\r\n DECLARE @Deltaº"); #line 193 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write(" [BIT];\r\n \r\n"); #line 195 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" } #line default #line hidden this.Write(" \r\n \r\n -- Get the values of the current record\r\n SELECT" + "\r\n"); #line 200 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.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 211 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_trackingTable.ToString())); #line default #line hidden this.Write("\r\n WHERE [TrackºId] = @"); #line 212 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(currentVersionTrackIdName)); #line default #line hidden this.Write(";\r\n\r\n -- Get Prior values for comparison\r\n SELECT\r\n"); #line 216 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" first = true; PushIndent(" "); foreach(SchemaDataSet.ColumnsRow targetColumn in _targetTableColumns) { Write(first ? " " : ", "); WriteLine("@Priorº" + targetColumn.COLUMN_NAME + " = [" + targetColumn.COLUMN_NAME + "]"); first = false; } PopIndent(); #line default #line hidden this.Write(" FROM "); #line 227 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_trackingTable.ToString())); #line default #line hidden this.Write("\r\n WHERE [TrackºId] = @PriorºTrackId;\r\n \r\n -- " + "Set Delta bits\r\n"); #line 231 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" foreach (SchemaDataSet.ColumnsRow targetColumn in _targetTableColumns) { #line default #line hidden this.Write(" SET @Deltaº"); #line 234 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write(" = CASE WHEN (@"); #line 234 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write(" IS NULL AND @Priorº"); #line 234 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write(" IS NULL) OR (@"); #line 234 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write(" = @Priorº"); #line 234 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden #line 234 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.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\t\t\tSET @AnyDelta = CONVERT(BIT, CONVERT(INT, @AnyDelta) | " + "CONVERT(INT, @Deltaº"); #line 235 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write("));\r\n\r\n"); #line 237 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" } #line default #line hidden this.Write("\r\n -- Set bits for record with current version schema\r\n INS" + "ERT ["); #line 241 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].["); #line 241 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_trackingTable.ToString())); #line default #line hidden this.Write("Δ]\r\n (\r\n [TrackºId]\r\n"); #line 244 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" foreach(SchemaDataSet.ColumnsRow targetColumn in _targetTableColumns) { #line default #line hidden this.Write(" , ["); #line 246 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write("]\r\n"); #line 247 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" } #line default #line hidden this.Write(" )\r\n VALUES\r\n (\r\n @" + ""); #line 252 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(currentVersionTrackIdName)); #line default #line hidden this.Write(" \r\n"); #line 253 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" foreach (SchemaDataSet.ColumnsRow targetColumn in _targetTableColumns) { #line default #line hidden this.Write(" , @Deltaº"); #line 256 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(targetColumn.COLUMN_NAME)); #line default #line hidden this.Write("\r\n"); #line 257 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" } #line default #line hidden this.Write(" \r\n );\r\n \r\n END; -- set bits for record wit" + "h current version schema\r\n \r\n"); #line 263 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" if (null != priorVersionTrackingTableQuery) { #line default #line hidden this.Write(" -- Else, set bits for records with earlier version schemas\r\n -- Go" + " to the next earlier version of the tracking table and repeat above steps \r\n"); #line 268 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" foreach (Catalog catalog in priorVersionTrackingTableQuery) // begin previous version search { #line default #line hidden this.Write(" -- Check against "); #line 270 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(catalog.AuditingTableName)); #line default #line hidden this.Write("\r\n IF (@PriorºTrackId IS NULL)\r\n BEGIN\r\n\t\t\t-- A prior track record " + "has not yet been found\r\n\t\t\t-- Execute earlier delta procedures (will ignore drop" + "ped fields and always compare new fields to NULL)\r\n EXECUTE ["); #line 275 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[Deltaº"); #line 275 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(catalog.AuditingTableName)); #line default #line hidden this.Write("]\r\n @"); #line 276 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(currentVersionTrackIdName)); #line default #line hidden this.Write("\t\t-- always compare against the current record \r\n , @PriorºTr" + "ackId OUTPUT\r\n\t\t\t\t, @AnyDelta\t\t\tOUTPUT\r\n"); #line 279 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" foreach (SchemaDataSet.SchemaPrimaryKeysRow primaryKeysRow in primaryKeysQuery) { #line default #line hidden this.Write(" , @PKº"); #line 281 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write("\r\n"); #line 282 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" } #line default #line hidden this.Write(" ;\r\n \r\n END;\r\n"); #line 286 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" } // end of previous version search } #line default #line hidden this.Write(@" END; -- process update action -- By this point, we might have a PriorTrackId value (not guaranteed) -- Set the PriorTrackºId field in the AuditMaster IF (@CurrentºAction = 'B' OR @CurrentºAction = 'I') BEGIN UPDATE ["); #line 297 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[AuditMaster]\r\n SET [PriorTrackºId] = @"); #line 298 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(currentVersionTrackIdName)); #line default #line hidden this.Write("\r\n\t\t\t\t, [AnyDelta] = @AnyDelta\r\n WHERE [TrackºId] = @"); #line 300 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(currentVersionTrackIdName)); #line default #line hidden this.Write("; \r\n END\r\n ELSE\r\n BEGIN\r\n"); #line 304 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" if (schemaDataSet.SchemaTables.TableExists(_params.AuditingSchema, "Catalog")) { #line default #line hidden this.Write(" -- For \'D\'elete actions (\'U\'pdate should already have found a PriorTrackI" + "d)\r\n"); #line 308 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" priorVersionTrackingTableQuery = from catalog in context.Catalogs where catalog.AuditedSchema.Equals(_schema, StringComparison.OrdinalIgnoreCase) where catalog.AuditedTableName.Equals(_tableName, StringComparison.OrdinalIgnoreCase) where !catalog.Archived orderby catalog.Version descending select catalog; foreach (Catalog catalog in priorVersionTrackingTableQuery) { #line default #line hidden this.Write(" IF (@PriorºTrackId IS NULL)\r\n BEGIN\r\n SELECT TOP 1 @" + "PriorºTrackId = [M].[TrackºId]\r\n FROM ["); #line 320 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].["); #line 320 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.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 321 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[AuditMaster] AS [M]\r\n ON [M].[TrackºId] = [T].[Tra" + "ckºId]\r\n WHERE [M].[TrackºId] < @"); #line 323 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(currentVersionTrackIdName)); #line default #line hidden this.Write("\r\n"); #line 324 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" foreach (SchemaDataSet.SchemaPrimaryKeysRow primaryKeysRow in primaryKeysQuery) { #line default #line hidden this.Write(" AND [T].["); #line 327 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write("] = @PKº"); #line 327 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(primaryKeysRow.COLUMN_NAME)); #line default #line hidden this.Write("\r\n"); #line 328 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" } #line default #line hidden this.Write(" ORDER BY [M].[TrackºId] DESC;\r\n\r\n END\r\n"); #line 333 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" } } #line default #line hidden this.Write("\r\n UPDATE ["); #line 337 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(_params.AuditingSchema)); #line default #line hidden this.Write("].[AuditMaster]\r\n\t SET [PriorTrackºId] = @PriorºTrackId\r\n\t\t\t\t, [AnyDelta" + "] = @AnyDelta\r\n WHERE [TrackºId] = @"); #line 340 "C:\Users\mcbeea\Desktop\AuditFramework\Model.AuditFramework\T4Templates\CreateUpdateDeltaTableProcedure.tt" this.Write(this.ToStringHelper.ToStringWithCulture(currentVersionTrackIdName)); #line default #line hidden this.Write(";\r\n \r\n END;\r\n\r\nGO\r\n"); return this.GenerationEnvironment.ToString(); }
/// <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(); }