Beispiel #1
0
 /// <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);
 }
Beispiel #2
0
        /// <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;
        }