public static DynamicPropertyDictionaryItem ToModel(this DynamicPropertyDictionaryItemEntity entity) { var result = new DynamicPropertyDictionaryItem(); result.InjectFrom(entity); result.DisplayNames = entity.DisplayNames.Select(v => v.ToModel()).ToArray(); return result; }
public void SaveDictionaryItems(string propertyId, DynamicPropertyDictionaryItem[] items) { if (propertyId == null) throw new ArgumentNullException("propertyId"); if (items == null) throw new ArgumentNullException("items"); using (var repository = _repositoryFactory()) using (var changeTracker = GetChangeTracker(repository)) { var property = repository.GetDynamicPropertiesByIds(new[] { propertyId }).First(); var sourceDicItems = items.Select(x => x.ToEntity(property)).ToList(); var targetDicItems = repository.GetDynamicPropertyDictionaryItems(propertyId).ToList(); sourceDicItems.CompareTo(targetDicItems, EqualityComparer<DynamicPropertyDictionaryItemEntity>.Default, (state, source, target) => { if (state == EntryState.Modified) { changeTracker.Attach(target); source.Patch(target); } else if (state == EntryState.Added) { repository.Add(source); } }); repository.UnitOfWork.Commit(); } }
public IHttpActionResult SaveDictionaryItems(string typeName, string propertyId, DynamicPropertyDictionaryItem[] items) { _service.SaveDictionaryItems(propertyId, items); return StatusCode(HttpStatusCode.NoContent); }