public string GetObjectDisplayName(SysEntity entity, int object_id) { EntityData data = this.GetObject(entity, object_id); if (data != null) { string displayFieldName = entity.GetDisplayFieldName(); if (data.ContainsKey(displayFieldName)) { return(Convert.ToString(data[displayFieldName])); } } return(null); }
public static SysField GetDisplayField(this SysEntity entity, DataContext context) { string key_name = entity.GetDisplayFieldName(); if (entity.Fields == null) { throw new ApplicationException("entity.Fieds没有加载"); } SysField field = context.FirstOrDefault <SysField>(f => (f.EntityId == entity.EntityId) && (f.FieldName == key_name)); if (field == null) { throw new ApplicationException(string.Format("没有找到显示字段:{0} -{1}", entity.EntityName, key_name)); } return(field); }
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); } } }
internal EntityData LoadFullWithEntity(SysEntity entity, int object_id, ProcessInstanceCacheFactory piCacheFactory) { EntityData data = null; Type tableType = TableCache.GetTableType(entity.EntityName); object obj2 = this.context.FindById(tableType, new object[] { object_id }); if (obj2 != null) { data = ObjectToEntityData(obj2, entity); } if (data != null) { EntityCache cache = new EntityCache(this); using (IEnumerator <SysField> enumerator = entity.Fields.GetEnumerator()) { while (enumerator.MoveNext()) { Func <SysEnumItem, bool> predicate = null; SysField p = enumerator.Current; if (p.DataType == 12) { if ((p.RefEntity != null) && (data[p.FieldName] != null)) { string displayFieldName = p.RefEntity.GetDisplayFieldName(); EntityData da = cache.GetObject(p.RefEntity, (int)data[p.FieldName]); if (da == null) { throw new ApplicationException(string.Format("[{0}]-[{1}]的引用字段[{2}]有值[{3}],但是对应的[{4}]不存在", new object[] { entity.EntityName, object_id, p.FieldName, data[p.FieldName], p.RefEntity.EntityName })); } if (da.ContainsKey(displayFieldName)) { da[p.FieldName] = data[displayFieldName]; } } } else { if (p.DataType == 13) { if (((p.RefEnum != null) && (p.RefEnum.EnumItems != null)) && (data[p.FieldName] != null)) { if (predicate == null) { predicate = delegate(SysEnumItem i) { int?itemValue = i.ItemValue; int num = (int)data[p.FieldName]; return((itemValue.GetValueOrDefault() == num) && itemValue.HasValue); }; } SysEnumItem item = p.RefEnum.EnumItems.FirstOrDefault <SysEnumItem>(predicate); if (item != null) { data[p.FieldName] = item.DisplayText; } } continue; } if (p.DataType == 11) { if (data[p.FieldName].ToInt() == 0) { data[p.FieldName] = "否"; } else { data[p.FieldName] = "是"; } continue; } if ((p.DataType == 15) && (data[p.FieldName] != null)) { string[] source = data[p.FieldName].ToString().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (source.Count <string>() != 2) { throw new ApplicationException(string.Format("[{0}]中[entity_id]或者[object_id]缺失", data[p.FieldName])); } long entityId = source[0].ToLong(); int num2 = source[1].ToInt(); SysEntity entityCache = piCacheFactory.PCacheFactory.GetEntityCache(entityId); if (entityCache != null) { string key = entityCache.GetDisplayFieldName(); EntityData data2 = cache.GetObject(entityCache, num2); if (data2 == null) { throw new ApplicationException(string.Format("[{0}]-[{1}]的引用字段[{2}]有值[{3}],但是对应的[{4}]不存在", new object[] { entity.EntityName, num2, p.FieldName, data[p.FieldName], entityCache.EntityName })); } if (data2.ContainsKey(key)) { data[p.FieldName] = data2[key]; } } } } } } } return(data); }