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); } } }