/// <summary>
        /// Save
        /// </summary>
        public void Save()
        {
            UnitsOfMeasurementAssociationsToolTDS unitsOfMeasurementAssociationsToolAddChanges = (UnitsOfMeasurementAssociationsToolTDS)Data.GetChanges();

            if (unitsOfMeasurementAssociationsToolAddChanges != null)
            {
                if (unitsOfMeasurementAssociationsToolAddChanges.AssociatedUnits.Rows.Count > 0)
                {
                    UnitsOfMeasurementAssociationsToolAssociatedUnitsGateway unitsOfMeasurementAssociationsToolAssociatedUnitsGateway = new UnitsOfMeasurementAssociationsToolAssociatedUnitsGateway(unitsOfMeasurementAssociationsToolAddChanges);

                    // Update associations
                    foreach (UnitsOfMeasurementAssociationsToolTDS.AssociatedUnitsRow row in (UnitsOfMeasurementAssociationsToolTDS.AssociatedUnitsDataTable)unitsOfMeasurementAssociationsToolAddChanges.AssociatedUnits)
                    {
                        int companyId = row.COMPANY_ID;

                        // Insert new unit of measurement
                        if ((row.Selected) && (!row.Deleted) && (!row.InDataBase))
                        {
                            int associationsId = row.AssociationsID;
                            int unitOfMeasurementId = row.UnitOfMeasurementID;
                            string module = row.Module;
                            bool byDefault = row.ByDefault;
                            bool deleted = row.Deleted;

                            UnitsOfMeasurementAssociations unitsOfMeasurementAssociations = new UnitsOfMeasurementAssociations(null);
                            unitsOfMeasurementAssociations.InsertDirect(associationsId, unitOfMeasurementId, module, byDefault, deleted, companyId);
                        }

                        // Update associations
                        if ((row.Selected) && (!row.Deleted) && (row.InDataBase))
                        {
                            int associationsId = row.AssociationsID;
                            int unitOfMeasurementId = row.UnitOfMeasurementID;
                            bool originalDeleted = false;
                            int originalCompanyId = companyId;

                            // Original values
                            int originalUnitOfMeasurementId = unitsOfMeasurementAssociationsToolAssociatedUnitsGateway.GetUnitOfMeasurementIdOriginal(associationsId);
                            string originalModule = unitsOfMeasurementAssociationsToolAssociatedUnitsGateway.GetModuleOriginal(associationsId);
                            bool originalByDefault = unitsOfMeasurementAssociationsToolAssociatedUnitsGateway.GetByDefaultOriginal(associationsId);

                            // New values
                            int newUnitOfMeasurementId = unitsOfMeasurementAssociationsToolAssociatedUnitsGateway.GetUnitOfMeasurementId(associationsId);
                            string newModule = unitsOfMeasurementAssociationsToolAssociatedUnitsGateway.GetModule(associationsId);
                            bool newByDefault = unitsOfMeasurementAssociationsToolAssociatedUnitsGateway.GetByDefault(associationsId);

                            UnitsOfMeasurementAssociations unitsOfMeasurementAssociations = new UnitsOfMeasurementAssociations(null);
                            unitsOfMeasurementAssociations.UpdateDirect(associationsId, unitOfMeasurementId, originalModule, originalByDefault, originalDeleted, originalCompanyId, associationsId, unitOfMeasurementId, newModule, newByDefault, originalDeleted, originalCompanyId);
                        }

                        // Delete associations
                        if ((row.Deleted) && (row.InDataBase))
                        {
                            UnitsOfMeasurementAssociations unitsOfMeasurementAssociations = new UnitsOfMeasurementAssociations(null);
                            unitsOfMeasurementAssociations.DeleteDirect(row.AssociationsID, row.COMPANY_ID);
                        }

                    }
                }
            }
        }