/// <summary> /// Get <see cref="EntitySet"/> of <see cref="Entity"/> for offline use /// </summary> /// <param name="domainContext"><see cref="DomainContext"/> source</param> /// <param name="offEntity"><see cref="OfflinableEntity"/> to select the type of <see cref="EntitySet"/></param> /// <returns><see cref="EntitySet"/> claimed</returns> private static EntitySet GetEntitySetForOfflinableEntity(DomainContext domainContext, OfflinableEntity offEntity) { Type entityType = offEntity.CurrentEntity.GetType(); return GetEntitySetForOfflinableEntity(domainContext, entityType); }
/// <summary> /// Serialize <see cref="DomainContext"/> to a Json formatted string /// </summary> /// <param name="domainContext"><see cref="DomainContext"/> content to be serialized</param> /// <returns>Json formatted <see cref="DomainContext"/></returns> public static string SerializeContext(this DomainContext domainContext) { IEnumerable<Type> entityTypes = GetEntityTypesInContext(domainContext.GetType()); EntityChangeSet changeSet = domainContext.EntityContainer.GetChanges(); List<List<OfflinableEntity>> offlineEntityLists = new List<List<OfflinableEntity>>(); foreach (Type entityType in entityTypes) { EntitySet entitySet = domainContext.EntityContainer.GetEntitySet(entityType); List<OfflinableEntity> offlineEntityList = new List<OfflinableEntity>(); foreach (Entity entity in entitySet) { OfflinableEntity offEntity = new OfflinableEntity(entity, changeSet.AddedEntities.Contains(entity)); offlineEntityList.Add(offEntity); } //Get deleted entities from changeset IEnumerable<Entity> removedEntites = changeSet.RemovedEntities.Where(x => x.GetType().Equals(entityType)); //Need to save deleted entities as well foreach (Entity entity in removedEntites) { OfflinableEntity offEntity = new OfflinableEntity(entity); offlineEntityList.Add(offEntity); } offlineEntityLists.Add(offlineEntityList); } string jsonData = JsonUtil.SerializeList(offlineEntityLists); return jsonData; }