internal static void SaveEntityCustomFields(Entity entity, Guid organizationId, string localEntityId) { if (localEntityId == null) { return; } ClientDataSet.EntityFieldsValuesDataTable table = GetEntityFieldsValues(organizationId, entity.Id, localEntityId); foreach (EntityField field in entity.CustomFields) { DataRow[] rows = table.Select(string.Format(CultureInfo.InvariantCulture, "{0} = '{1}' AND {2} = '{3}'" , table.EntityFieldIdColumn.ColumnName, field.Id, table.LocalEntityIdColumn.ColumnName, Support.PreserveSingleQuote(localEntityId))); List <object> values = new List <object>(field.SelectedValues); if (field.AllowDBNull && (values.Count == 0)) { values.Add(null); } foreach (ClientDataSet.EntityFieldsValuesRow row in rows) { object obj = null; if (!row.IsValueNull()) { obj = Support.ConvertStringToType(row.Value, field.DataType); } if (field.SelectedValues.Contains(obj)) { values.Remove(obj); } else { row.Delete(); } } foreach (object obj in values) { ClientDataSet.EntityFieldsValuesRow row = table.NewEntityFieldsValuesRow(); row.EntityFieldValueId = Guid.NewGuid(); row.EntityFieldId = field.Id; row.LocalEntityId = localEntityId; if (!Support.IsNullOrDBNull(obj)) { row.Value = Convert.ToString(obj, CultureInfo.CurrentCulture); } table.AddEntityFieldsValuesRow(row); } } using (EntityFieldsValuesTableAdapter adapter = new EntityFieldsValuesTableAdapter(OrganizationProvider.GetConnectionString(organizationId))) { adapter.Update(table); } RemoveFromCache(); }
internal static void SaveEntityCustomField(EntityField field, Guid organizationId, string localEntityId) { if (localEntityId == null) { return; } ClientDataSet.EntityFieldsValuesDataTable table = GetEntityFieldValues(organizationId, field.Id, localEntityId); List <object> values = new List <object>(field.SelectedValues); if (field.AllowDBNull && (values.Count == 0)) { values.Add(null); } foreach (ClientDataSet.EntityFieldsValuesRow row in table) { object obj = null; if (!row.IsValueNull()) { obj = Support.ConvertStringToType(row.Value, field.DataType); } if (field.SelectedValues.Contains(obj)) { values.Remove(obj); } else { row.Delete(); } } foreach (object obj in values) { ClientDataSet.EntityFieldsValuesRow row = table.NewEntityFieldsValuesRow(); row.EntityFieldValueId = Guid.NewGuid(); row.EntityFieldId = field.Id; row.LocalEntityId = localEntityId; if (!Support.IsNullOrDBNull(obj)) { row.Value = Convert.ToString(obj, CultureInfo.CurrentCulture); } table.AddEntityFieldsValuesRow(row); } using (EntityFieldsValuesTableAdapter adapter = new EntityFieldsValuesTableAdapter(OrganizationProvider.GetConnectionString(organizationId))) { adapter.Update(table); } RemoveFromCache(); }