/// <summary>Inserts a PositionTarget record.</summary> /// <param name="transaction">Commits or rejects a set of commands as a unit</param> /// <param name="modelId">The value for the ModelId column.</param> /// <param name="securityId">The value for the SecurityId column.</param> /// <param name="positionTypeCode">The value for the PositionTypeCode column.</param> /// <param name="percent">The value for the Percent column.</param> public static void Insert(AdoTransaction adoTransaction, SqlTransaction sqlTransaction, ref long rowVersion, int modelId, int securityId, int positionTypeCode, decimal percent) { // Accessor for the PositionTarget Table. ServerDataModel.PositionTargetDataTable positionTargetTable = ServerDataModel.PositionTarget; // Apply Defaults // Increment the row version rowVersion = ServerDataModel.RowVersion.Increment(); // Insert the record into the ADO database. ServerDataModel.PositionTargetRow positionTargetRow = positionTargetTable.NewPositionTargetRow(); positionTargetRow[positionTargetTable.RowVersionColumn] = rowVersion; positionTargetRow[positionTargetTable.ModelIdColumn] = modelId; positionTargetRow[positionTargetTable.SecurityIdColumn] = securityId; positionTargetRow[positionTargetTable.PositionTypeCodeColumn] = positionTypeCode; positionTargetRow[positionTargetTable.PercentColumn] = percent; positionTargetTable.AddPositionTargetRow(positionTargetRow); adoTransaction.DataRows.Add(positionTargetRow); // Insert the record into the SQL database. SqlCommand sqlCommand = new SqlCommand("insert \"PositionTarget\" (\"rowVersion\",\"ModelId\",\"SecurityId\",\"PositionTypeCode\",\"" + "Percent\") values (@rowVersion,@modelId,@securityId,@positionTypeCode,@percent)"); sqlCommand.Connection = sqlTransaction.Connection; sqlCommand.Transaction = sqlTransaction; sqlCommand.Parameters.Add(new SqlParameter("@rowVersion", SqlDbType.BigInt, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, rowVersion)); sqlCommand.Parameters.Add(new SqlParameter("@modelId", SqlDbType.Int, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, modelId)); sqlCommand.Parameters.Add(new SqlParameter("@securityId", SqlDbType.Int, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, securityId)); sqlCommand.Parameters.Add(new SqlParameter("@positionTypeCode", SqlDbType.Int, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, positionTypeCode)); sqlCommand.Parameters.Add(new SqlParameter("@percent", SqlDbType.Decimal, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, percent)); sqlCommand.ExecuteNonQuery(); }
/// <summary>Archives a PositionTarget record.</summary> /// <param name="transaction">Commits or rejects a set of commands as a unit</param> /// <param name="RowVersion">The version number of this row.</param> /// <param name="modelId">The value for the ModelId column.</param> /// <param name="securityId">The value for the SecurityId column.</param> /// <param name="positionTypeCode">The value for the PositionTypeCode column.</param> /// <param name="archive">true to archive the object, false to unarchive it.</param> public static void Archive(AdoTransaction adoTransaction, SqlTransaction sqlTransaction, long rowVersion, int modelId, int securityId, int positionTypeCode) { // Accessor for the PositionTarget Table. ServerDataModel.PositionTargetDataTable positionTargetTable = ServerDataModel.PositionTarget; // Rule #1: Make sure the record exists before updating it. ServerDataModel.PositionTargetRow positionTargetRow = positionTargetTable.FindByModelIdSecurityIdPositionTypeCode(modelId, securityId, positionTypeCode); if ((positionTargetRow == null)) { throw new Exception(string.Format("The PositionTarget table does not have an element identified by {0}{0}{0}", modelId, securityId, positionTypeCode)); } // Rule #2: Optimistic Concurrency Check if ((positionTargetRow.RowVersion != rowVersion)) { throw new System.Exception("This record is busy. Please try again later."); } // Archive the child records. // Increment the row version rowVersion = ServerDataModel.RowVersion.Increment(); // Delete the record in the ADO database. positionTargetRow[positionTargetTable.RowVersionColumn] = rowVersion; adoTransaction.DataRows.Add(positionTargetRow); positionTargetRow.Delete(); // Archive the record in the SQL database. SqlCommand sqlCommand = new SqlCommand("update \"PositionTarget\" set \"IsArchived\" = 1 where \"ModelId\"=@modelId and \"Securi" + "tyId\"=@securityId and \"PositionTypeCode\"=@positionTypeCode"); sqlCommand.Connection = sqlTransaction.Connection; sqlCommand.Transaction = sqlTransaction; sqlCommand.Parameters.Add(new SqlParameter("@modelId", SqlDbType.Int, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, modelId)); sqlCommand.Parameters.Add(new SqlParameter("@securityId", SqlDbType.Int, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, securityId)); sqlCommand.Parameters.Add(new SqlParameter("@positionTypeCode", SqlDbType.Int, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, positionTypeCode)); sqlCommand.ExecuteNonQuery(); }
/// <summary>Archives a PositionTarget record using Metadata Parameters.</summary> /// <param name="transaction">Contains the parameters and exceptions for this command.</param> public static void Archive(ParameterList parameters) { // Accessor for the PositionTarget Table. ServerDataModel.PositionTargetDataTable positionTargetTable = ServerDataModel.PositionTarget; // Extract the parameters from the command batch. AdoTransaction adoTransaction = parameters["adoTransaction"]; SqlTransaction sqlTransaction = parameters["sqlTransaction"]; object configurationId = parameters["configurationId"].Value; string externalModelId = parameters["modelId"]; string externalSecurityId = parameters["securityId"]; string externalPositionTypeCode = parameters["positionTypeCode"]; // Resolve External Identifiers int modelId = Model.FindRequiredKey(configurationId, "modelId", externalModelId); int securityId = Security.FindRequiredKey(configurationId, "securityId", externalSecurityId); int positionTypeCode = PositionType.FindRequiredKey(configurationId, "positionTypeCode", externalPositionTypeCode); // The row versioning is largely disabled for external operations. long rowVersion = long.MinValue; // While the optimistic concurrency checking is disabled for the external methods, the internal methods // still need to perform the check. This ncurrency checking logic by finding the current row version to be // will bypass the coused when the internal method is called. ServerDataModel.PositionTargetRow positionTargetRow = positionTargetTable.FindByModelIdSecurityIdPositionTypeCode(modelId, securityId, positionTypeCode); rowVersion = ((long)(positionTargetRow[positionTargetTable.RowVersionColumn])); // Call the internal method to complete the operation. MarkThree.Quasar.Core.PositionTarget.Archive(adoTransaction, sqlTransaction, rowVersion, modelId, securityId, positionTypeCode); }
/// <summary>Updates a PositionTarget record using Metadata Parameters.</summary> /// <param name="transaction">Contains the parameters and exceptions for this command.</param> public static void Update(ParameterList parameters) { // Accessor for the PositionTarget Table. ServerDataModel.PositionTargetDataTable positionTargetTable = ServerDataModel.PositionTarget; // Extract the parameters from the command batch. AdoTransaction adoTransaction = parameters["adoTransaction"]; SqlTransaction sqlTransaction = parameters["sqlTransaction"]; object configurationId = parameters["configurationId"].Value; string externalModelId = parameters["modelId"]; string externalSecurityId = parameters["securityId"]; string externalPositionTypeCode = parameters["positionTypeCode"]; object percent = parameters["percent"].Value; // The row versioning is largely disabled for external operations. long rowVersion = long.MinValue; // Resolve External Identifiers int modelId = Model.FindRequiredKey(configurationId, "modelId", externalModelId); int securityId = Security.FindRequiredKey(configurationId, "securityId", externalSecurityId); int positionTypeCode = PositionType.FindRequiredKey(configurationId, "positionTypeCode", externalPositionTypeCode); // This will bypass the internal optimistic concurrency checking by providing the current rowVersion to the // internal method. ServerDataModel.PositionTargetRow positionTargetRow = positionTargetTable.FindByModelIdSecurityIdPositionTypeCode(modelId, securityId, positionTypeCode); rowVersion = ((long)(positionTargetRow[positionTargetTable.RowVersionColumn])); // Call the internal method to complete the operation. MarkThree.Quasar.Core.PositionTarget.Update(adoTransaction, sqlTransaction, ref rowVersion, modelId, securityId, positionTypeCode, percent); // Return values. parameters["rowVersion"] = rowVersion; }
/// <summary>Archives a PositionType record.</summary> /// <param name="transaction">Commits or rejects a set of commands as a unit</param> /// <param name="RowVersion">The version number of this row.</param> /// <param name="positionTypeCode">The value for the PositionTypeCode column.</param> /// <param name="archive">true to archive the object, false to unarchive it.</param> public static void Archive(AdoTransaction adoTransaction, SqlTransaction sqlTransaction, long rowVersion, int positionTypeCode) { // Accessor for the PositionType Table. ServerDataModel.PositionTypeDataTable positionTypeTable = ServerDataModel.PositionType; // Rule #1: Make sure the record exists before updating it. ServerDataModel.PositionTypeRow positionTypeRow = positionTypeTable.FindByPositionTypeCode(positionTypeCode); if ((positionTypeRow == null)) { throw new Exception(string.Format("The PositionType table does not have an element identified by {0}", positionTypeCode)); } // Rule #2: Optimistic Concurrency Check if ((positionTypeRow.RowVersion != rowVersion)) { throw new System.Exception("This record is busy. Please try again later."); } // Archive the child records. for (int index = 0; (index < positionTypeRow.GetPositionRows().Length); index = (index + 1)) { ServerDataModel.PositionRow childPositionRow = positionTypeRow.GetPositionRows()[index]; Position.Archive(adoTransaction, sqlTransaction, childPositionRow.RowVersion, childPositionRow.AccountId, childPositionRow.SecurityId, childPositionRow.PositionTypeCode); } for (int index = 0; (index < positionTypeRow.GetPositionTargetRows().Length); index = (index + 1)) { ServerDataModel.PositionTargetRow childPositionTargetRow = positionTypeRow.GetPositionTargetRows()[index]; PositionTarget.Archive(adoTransaction, sqlTransaction, childPositionTargetRow.RowVersion, childPositionTargetRow.ModelId, childPositionTargetRow.SecurityId, childPositionTargetRow.PositionTypeCode); } for (int index = 0; (index < positionTypeRow.GetTaxLotRows().Length); index = (index + 1)) { ServerDataModel.TaxLotRow childTaxLotRow = positionTypeRow.GetTaxLotRows()[index]; TaxLot.Archive(adoTransaction, sqlTransaction, childTaxLotRow.RowVersion, childTaxLotRow.TaxLotId); } for (int index = 0; (index < positionTypeRow.GetViolationRows().Length); index = (index + 1)) { ServerDataModel.ViolationRow childViolationRow = positionTypeRow.GetViolationRows()[index]; Violation.Archive(adoTransaction, sqlTransaction, childViolationRow.RowVersion, childViolationRow.ViolationId); } // Increment the row version rowVersion = ServerDataModel.RowVersion.Increment(); // Delete the record in the ADO database. positionTypeRow[positionTypeTable.RowVersionColumn] = rowVersion; adoTransaction.DataRows.Add(positionTypeRow); positionTypeRow.Delete(); // Archive the record in the SQL database. SqlCommand sqlCommand = new SqlCommand("update \"PositionType\" set \"IsArchived\" = 1 where \"PositionTypeCode\"=@positionType" + "Code"); sqlCommand.Connection = sqlTransaction.Connection; sqlCommand.Transaction = sqlTransaction; sqlCommand.Parameters.Add(new SqlParameter("@positionTypeCode", SqlDbType.Int, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, positionTypeCode)); sqlCommand.ExecuteNonQuery(); }
/// <summary>ArchiveChildrens a Model record.</summary> /// <param name="transaction">Commits or rejects a set of commands as a unit</param> /// <param name="rowVersion">the version number of this row.</param> /// <param name="modelId">The value for the ModelId column.</param> /// <param name="archive">true to archive the object, false to unarchive it.</param> internal static void ArchiveChildren(AdoTransaction adoTransaction, SqlTransaction sqlTransaction, long rowVersion, int modelId) { // Accessor for the Model Table. ServerDataModel.ModelDataTable modelTable = ServerDataModel.Model; // This record can be used to iterate through all the children. ServerDataModel.ModelRow modelRow = modelTable.FindByModelId(modelId); // Archive the child records. for (int index = 0; (index < modelRow.GetAccountRows().Length); index = (index + 1)) { ServerDataModel.AccountRow childAccountRow = modelRow.GetAccountRows()[index]; Account.ArchiveChildren(adoTransaction, sqlTransaction, childAccountRow.RowVersion, childAccountRow.AccountId); } for (int index = 0; (index < modelRow.GetPositionTargetRows().Length); index = (index + 1)) { ServerDataModel.PositionTargetRow childPositionTargetRow = modelRow.GetPositionTargetRows()[index]; PositionTarget.Archive(adoTransaction, sqlTransaction, childPositionTargetRow.RowVersion, childPositionTargetRow.ModelId, childPositionTargetRow.SecurityId, childPositionTargetRow.PositionTypeCode); } for (int index = 0; (index < modelRow.GetSectorTargetRows().Length); index = (index + 1)) { ServerDataModel.SectorTargetRow childSectorTargetRow = modelRow.GetSectorTargetRows()[index]; SectorTarget.Archive(adoTransaction, sqlTransaction, childSectorTargetRow.RowVersion, childSectorTargetRow.ModelId, childSectorTargetRow.SectorId); } // Increment the row version rowVersion = ServerDataModel.RowVersion.Increment(); // Delete the record in the ADO database. modelRow[modelTable.RowVersionColumn] = rowVersion; adoTransaction.DataRows.Add(modelRow); modelRow.Delete(); // Archive the record in the SQL database. SqlCommand sqlCommand = new SqlCommand("update \"Model\" set \"IsArchived\" = 1 where \"ModelId\"=@modelId"); sqlCommand.Connection = sqlTransaction.Connection; sqlCommand.Transaction = sqlTransaction; sqlCommand.Parameters.Add(new SqlParameter("@modelId", SqlDbType.Int, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, modelId)); sqlCommand.ExecuteNonQuery(); }
/// <summary>Loads a PositionTarget record using Metadata Parameters.</summary> /// <param name="transaction">Contains the parameters and exceptions for this command.</param> public static void Load(ParameterList parameters) { // Accessor for the PositionTarget Table. ServerDataModel.PositionTargetDataTable positionTargetTable = ServerDataModel.PositionTarget; // Extract the parameters from the command batch. AdoTransaction adoTransaction = parameters["adoTransaction"]; SqlTransaction sqlTransaction = parameters["sqlTransaction"]; object configurationId = parameters["configurationId"].Value; string externalModelId = parameters["modelId"]; string externalSecurityId = parameters["securityId"]; string externalPositionTypeCode = parameters["positionTypeCode"]; decimal percent = parameters["percent"]; // The row versioning is largely disabled for external operations. long rowVersion = long.MinValue; // Resolve External Identifiers int modelId = Model.FindRequiredKey(configurationId, "modelId", externalModelId); int securityId = Security.FindRequiredKey(configurationId, "securityId", externalSecurityId); int positionTypeCode = PositionType.FindRequiredKey(configurationId, "positionTypeCode", externalPositionTypeCode); // Find the record using the unique identifier. If it doesn't exist, it will be inserted, if it does exist, // it will be updated. ServerDataModel.PositionTargetRow positionTargetRow = positionTargetTable.FindByModelIdSecurityIdPositionTypeCode(modelId, securityId, positionTypeCode); if ((positionTargetRow == null)) { // Call the internal 'Insert' method to complete the operation. MarkThree.Quasar.Core.PositionTarget.Insert(adoTransaction, sqlTransaction, ref rowVersion, modelId, securityId, positionTypeCode, percent); } else { // This will bypass the optimistic concurrency checking required by the internal method. rowVersion = ((long)(positionTargetRow[positionTargetTable.RowVersionColumn])); // Call the internal 'Update' method to complete the operation. MarkThree.Quasar.Core.PositionTarget.Update(adoTransaction, sqlTransaction, ref rowVersion, modelId, securityId, positionTypeCode, percent); } // Return values parameters["rowVersion"] = rowVersion; }
/// <summary>ArchiveChildrens a Security record.</summary> /// <param name="transaction">Commits or rejects a set of commands as a unit</param> /// <param name="rowVersion">the version number of this row.</param> /// <param name="securityId">The value for the SecurityId column.</param> /// <param name="archive">true to archive the object, false to unarchive it.</param> internal static void ArchiveChildren(AdoTransaction adoTransaction, SqlTransaction sqlTransaction, long rowVersion, int securityId) { // Accessor for the Security Table. ServerDataModel.SecurityDataTable securityTable = ServerDataModel.Security; // This record can be used to iterate through all the children. ServerDataModel.SecurityRow securityRow = securityTable.FindBySecurityId(securityId); // Archive the child records. for (int index = 0; (index < securityRow.GetAccountRows().Length); index = (index + 1)) { ServerDataModel.AccountRow childAccountRow = securityRow.GetAccountRows()[index]; Account.ArchiveChildren(adoTransaction, sqlTransaction, childAccountRow.RowVersion, childAccountRow.AccountId); } for (int index = 0; (index < securityRow.GetAllocationRowsByFKSecurityAllocationSecurityId().Length); index = (index + 1)) { ServerDataModel.AllocationRow childAllocationRow = securityRow.GetAllocationRowsByFKSecurityAllocationSecurityId()[index]; Allocation.Archive(adoTransaction, sqlTransaction, childAllocationRow.RowVersion, childAllocationRow.AllocationId); } for (int index = 0; (index < securityRow.GetAllocationRowsByFKSecurityAllocationSettlementId().Length); index = (index + 1)) { ServerDataModel.AllocationRow childAllocationRow = securityRow.GetAllocationRowsByFKSecurityAllocationSettlementId()[index]; Allocation.Archive(adoTransaction, sqlTransaction, childAllocationRow.RowVersion, childAllocationRow.AllocationId); } for (int index = 0; (index < securityRow.GetBlockOrderRowsByFKSecurityBlockOrderSecurityId().Length); index = (index + 1)) { ServerDataModel.BlockOrderRow childBlockOrderRow = securityRow.GetBlockOrderRowsByFKSecurityBlockOrderSecurityId()[index]; BlockOrder.Archive(adoTransaction, sqlTransaction, childBlockOrderRow.RowVersion, childBlockOrderRow.BlockOrderId); } for (int index = 0; (index < securityRow.GetBlockOrderRowsByFKSecurityBlockOrderSettlementId().Length); index = (index + 1)) { ServerDataModel.BlockOrderRow childBlockOrderRow = securityRow.GetBlockOrderRowsByFKSecurityBlockOrderSettlementId()[index]; BlockOrder.Archive(adoTransaction, sqlTransaction, childBlockOrderRow.RowVersion, childBlockOrderRow.BlockOrderId); } for (int index = 0; (index < securityRow.GetBlotterMapRows().Length); index = (index + 1)) { ServerDataModel.BlotterMapRow childBlotterMapRow = securityRow.GetBlotterMapRows()[index]; BlotterMap.Archive(adoTransaction, sqlTransaction, childBlotterMapRow.RowVersion, childBlotterMapRow.BlotterMapId); } for (int index = 0; (index < securityRow.GetDebtRowsByFKSecurityDebtDebtId().Length); index = (index + 1)) { ServerDataModel.DebtRow childDebtRow = securityRow.GetDebtRowsByFKSecurityDebtDebtId()[index]; Debt.ArchiveChildren(adoTransaction, sqlTransaction, childDebtRow.RowVersion, childDebtRow.DebtId); } for (int index = 0; (index < securityRow.GetDebtRowsByFKSecurityDebtSettlementId().Length); index = (index + 1)) { ServerDataModel.DebtRow childDebtRow = securityRow.GetDebtRowsByFKSecurityDebtSettlementId()[index]; Debt.ArchiveChildren(adoTransaction, sqlTransaction, childDebtRow.RowVersion, childDebtRow.DebtId); } for (int index = 0; (index < securityRow.GetCurrencyRows().Length); index = (index + 1)) { ServerDataModel.CurrencyRow childCurrencyRow = securityRow.GetCurrencyRows()[index]; Currency.ArchiveChildren(adoTransaction, sqlTransaction, childCurrencyRow.RowVersion, childCurrencyRow.CurrencyId); } for (int index = 0; (index < securityRow.GetEquityRowsByFKSecurityEquityEquityId().Length); index = (index + 1)) { ServerDataModel.EquityRow childEquityRow = securityRow.GetEquityRowsByFKSecurityEquityEquityId()[index]; Equity.ArchiveChildren(adoTransaction, sqlTransaction, childEquityRow.RowVersion, childEquityRow.EquityId); } for (int index = 0; (index < securityRow.GetEquityRowsByFKSecurityEquitySettlementId().Length); index = (index + 1)) { ServerDataModel.EquityRow childEquityRow = securityRow.GetEquityRowsByFKSecurityEquitySettlementId()[index]; Equity.ArchiveChildren(adoTransaction, sqlTransaction, childEquityRow.RowVersion, childEquityRow.EquityId); } for (int index = 0; (index < securityRow.GetOrderRowsByFKSecurityOrderSecurityId().Length); index = (index + 1)) { ServerDataModel.OrderRow childOrderRow = securityRow.GetOrderRowsByFKSecurityOrderSecurityId()[index]; Order.Archive(adoTransaction, sqlTransaction, childOrderRow.RowVersion, childOrderRow.OrderId); } for (int index = 0; (index < securityRow.GetOrderRowsByFKSecurityOrderSettlementId().Length); index = (index + 1)) { ServerDataModel.OrderRow childOrderRow = securityRow.GetOrderRowsByFKSecurityOrderSettlementId()[index]; Order.Archive(adoTransaction, sqlTransaction, childOrderRow.RowVersion, childOrderRow.OrderId); } for (int index = 0; (index < securityRow.GetPositionRows().Length); index = (index + 1)) { ServerDataModel.PositionRow childPositionRow = securityRow.GetPositionRows()[index]; Position.Archive(adoTransaction, sqlTransaction, childPositionRow.RowVersion, childPositionRow.AccountId, childPositionRow.SecurityId, childPositionRow.PositionTypeCode); } for (int index = 0; (index < securityRow.GetPositionTargetRows().Length); index = (index + 1)) { ServerDataModel.PositionTargetRow childPositionTargetRow = securityRow.GetPositionTargetRows()[index]; PositionTarget.Archive(adoTransaction, sqlTransaction, childPositionTargetRow.RowVersion, childPositionTargetRow.ModelId, childPositionTargetRow.SecurityId, childPositionTargetRow.PositionTypeCode); } for (int index = 0; (index < securityRow.GetPriceRows().Length); index = (index + 1)) { ServerDataModel.PriceRow childPriceRow = securityRow.GetPriceRows()[index]; Price.Archive(adoTransaction, sqlTransaction, childPriceRow.RowVersion, childPriceRow.SecurityId, childPriceRow.CurrencyId); } for (int index = 0; (index < securityRow.GetProposedOrderRowsByFKSecurityProposedOrderSecurityId().Length); index = (index + 1)) { ServerDataModel.ProposedOrderRow childProposedOrderRow = securityRow.GetProposedOrderRowsByFKSecurityProposedOrderSecurityId()[index]; ProposedOrder.Archive(adoTransaction, sqlTransaction, childProposedOrderRow.RowVersion, childProposedOrderRow.ProposedOrderId); } for (int index = 0; (index < securityRow.GetProposedOrderRowsByFKSecurityProposedOrderSettlementId().Length); index = (index + 1)) { ServerDataModel.ProposedOrderRow childProposedOrderRow = securityRow.GetProposedOrderRowsByFKSecurityProposedOrderSettlementId()[index]; ProposedOrder.Archive(adoTransaction, sqlTransaction, childProposedOrderRow.RowVersion, childProposedOrderRow.ProposedOrderId); } for (int index = 0; (index < securityRow.GetTaxLotRows().Length); index = (index + 1)) { ServerDataModel.TaxLotRow childTaxLotRow = securityRow.GetTaxLotRows()[index]; TaxLot.Archive(adoTransaction, sqlTransaction, childTaxLotRow.RowVersion, childTaxLotRow.TaxLotId); } for (int index = 0; (index < securityRow.GetViolationRows().Length); index = (index + 1)) { ServerDataModel.ViolationRow childViolationRow = securityRow.GetViolationRows()[index]; Violation.Archive(adoTransaction, sqlTransaction, childViolationRow.RowVersion, childViolationRow.ViolationId); } // Increment the row version rowVersion = ServerDataModel.RowVersion.Increment(); // Delete the record in the ADO database. securityRow[securityTable.RowVersionColumn] = rowVersion; adoTransaction.DataRows.Add(securityRow); securityRow.Delete(); // Archive the record in the SQL database. SqlCommand sqlCommand = new SqlCommand("update \"Security\" set \"IsArchived\" = 1 where \"SecurityId\"=@securityId"); sqlCommand.Connection = sqlTransaction.Connection; sqlCommand.Transaction = sqlTransaction; sqlCommand.Parameters.Add(new SqlParameter("@securityId", SqlDbType.Int, 0, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, securityId)); sqlCommand.ExecuteNonQuery(); }