private static void LoadRelations(EntitySchema es, SysEntity entity, EntityCacheBase cache)
        {
            List <SysMoreMoreRelation> list = cache.SysMoreMoreRelation.Where <SysMoreMoreRelation>(delegate(SysMoreMoreRelation s) {
                long?childEntityId = s.ChildEntityId;
                long entityId      = entity.EntityId;
                return(((childEntityId.GetValueOrDefault() == entityId) && childEntityId.HasValue) || (((childEntityId = s.ParentEntityId).GetValueOrDefault() == (entityId = entity.EntityId)) && childEntityId.HasValue));
            }).ToList <SysMoreMoreRelation>();

            foreach (SysMoreMoreRelation relation in list)
            {
                long oid = relation.ParentEntityId.Value;
                if (oid == entity.EntityId)
                {
                    oid = relation.ChildEntityId.Value;
                }
                SysEntity entity2 = (from s in cache.SysEntity
                                     where s.EntityId == oid
                                     select s).FirstOrDefault <SysEntity>();
                if (entity2 == null)
                {
                    throw new ApplicationException(oid.ToString());
                }
                es.MmTables.Add(entity2.EntityName + "s", relation.TableName);
                ReferencedObject item = new ReferencedObject {
                    EntityType     = cache.GetEntityType(entity2.EntityId),
                    ReferenceField = entity2.EntityName + "s",
                    DeleteFlag     = DeleteFlag.SetNull,
                    ReferenceType  = ReferenceType.MoreMore
                };
                es.ReferencedObjectList.Add(item);
            }
        }
 private static void LoadFields(EntitySchema es, SysEntity entity, EntityCacheBase cache)
 {
     foreach (SysField field in entity.Fields)
     {
         bool?isNullable;
         es.Fields.Add(field);
         if (field.DataType == 1)
         {
             isNullable = field.IsNullable;
             es.PropertyTypes.Add(es.KeyName, dataTypes[(DataTypeEnum)field.DataType.Value][isNullable.HasValue ? isNullable.GetValueOrDefault() : false]);
             es.PropertyTypeEnums.Add(es.KeyName, field.DataType.Value);
         }
         else
         {
             if (!string.IsNullOrEmpty(field.DefaultValue))
             {
                 es.DefaultValues.Add(field.FieldName, field.DefaultValue);
             }
             isNullable = field.IsNullable;
             es.PropertyTypes.Add(field.FieldName, dataTypes[(DataTypeEnum)field.DataType.Value][isNullable.HasValue ? isNullable.GetValueOrDefault() : false]);
             es.PropertyTypeEnums.Add(field.FieldName, field.DataType.Value);
             if (field.DataType == 10)
             {
                 es.FilePropertys.Add(field.FieldName);
             }
         }
     }
 }
 private void LoadEntityCache()
 {
     lock (meta_locker)
     {
         if (_entityCacheDict.Count == 0)
         {
             EntityCacheBase           base2              = EntityCacheBase.LoadCache();
             List <SysEntity>          sysEntity          = base2.SysEntity;
             List <SysField>           sysField           = base2.SysField;
             List <SysOneMoreRelation> sysOneMoreRelation = base2.SysOneMoreRelation;
             foreach (SysField field in sysField)
             {
                 _fieldCacheDict[field.FieldId] = field;
             }
             foreach (SysEntity entity in sysEntity)
             {
                 _entityCacheDict[entity.EntityId] = entity;
             }
             foreach (SysOneMoreRelation relation in sysOneMoreRelation)
             {
                 _relationCacheDict[relation.RelationId] = relation;
             }
         }
     }
 }
 private static void LoadUniqueKey(EntitySchema es, SysEntity entity, EntityCacheBase cache)
 {
     foreach (SysUniqueKey key in entity.UniqueKeys)
     {
         string        str  = string.Format("{0}_id_{1}", key.UniqueKeyName, key.UniqueKeyId);
         List <string> list = (from p in key.UniqueKeyFields select p.SysField.FieldName).ToList <string>();
         es.UniqueKeyDict[str] = list;
     }
 }
        private static void LoadEntitySchema()
        {
            EntityCacheBase cache = EntityCacheBase.LoadCache();

            using (List <SysEntity> .Enumerator enumerator = cache.SysEntity.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    Func <SysMobileStepEntity, bool> predicate = null;
                    SysEntity    e         = enumerator.Current;
                    EntitySchema es        = new EntitySchema();
                    bool?        isHistory = e.IsHistory;
                    es.IsHistory = isHistory.HasValue ? isHistory.GetValueOrDefault() : false;
                    SysOneMoreRelation relation = e.ChildOneMoreRelations.FirstOrDefault <SysOneMoreRelation>(p => p.Is_Tree == true);
                    if (relation != null)
                    {
                        es.TreeRelationFieldName = relation.ChildField.FieldName;
                    }
                    es.IsChangeTableVersion = false;
                    if (predicate == null)
                    {
                        predicate = delegate(SysMobileStepEntity p) {
                            long?entityId = p.EntityId;
                            long num      = e.EntityId;
                            return((entityId.GetValueOrDefault() == num) && entityId.HasValue);
                        };
                    }
                    if (cache.SysMobileStepEntity.Where <SysMobileStepEntity>(predicate).Count <SysMobileStepEntity>() > 0)
                    {
                        es.IsChangeTableVersion = true;
                    }
                    es.EntityId    = e.EntityId;
                    es.EntityName  = e.EntityName;
                    es.KeyName     = e.GetKeyFieldName();
                    es.EntityType  = cache.GetEntityType(e.EntityId);
                    es.DisplayName = e.GetDisplayFieldName();
                    int?privilegeMode = e.PrivilegeMode;
                    es.PrivilegeMode = privilegeMode.HasValue ? privilegeMode.GetValueOrDefault() : -2147483647;
                    privilegeMode    = e.RequiredLevel;
                    es.RequiredLevel = privilegeMode.HasValue ? privilegeMode.GetValueOrDefault() : -2147483647;
                    LoadUniqueKey(es, e, cache);
                    LoadFields(es, e, cache);
                    LoadRelations(es, e, cache);
                    Add(es);
                }
            }
        }