internal PermissionModel GetPermissionModel(ulong modelID) { var modelNode = DesignTree.FindModelNode(ModelType.Permission, modelID); if (modelNode != null) { return((PermissionModel)modelNode.Model); } throw new Exception($"Cannot find EntityModel: {modelID}"); }
public EntityModel GetEntityModel(ulong modelID) { var modelNode = DesignTree.FindModelNode(ModelType.Entity, modelID); if (modelNode != null) { return((EntityModel)modelNode.Model); } throw new Exception($"Cannot find EntityModel: {modelID}"); }
private static void GetEntityMemberTypeStringAndReadOnly(EntityMemberModel mm, ref string typeString, ref bool readOnly, DesignTree designTree) { switch (mm.Type) { case EntityMemberType.DataField: //判断是否是枚举 DataFieldModel dmm = mm as DataFieldModel; //if (dmm.DataType == EntityFieldType.Enum) //{ // if (string.IsNullOrEmpty(dmm.EnumModelID)) // typeString = "int"; // else // { // string[] sr = dmm.EnumModelID.Split('.'); // typeString = sr[0] + ".Enums." + sr[1]; // } //} if (dmm.DataType == EntityFieldType.EntityId) { typeString = "EntityId"; } else { typeString = dmm.DataType.GetValueType().FullName; //TODO:简化类型名称 } //系统存储分区键与sql存储的主键为只读 readOnly |= dmm.IsPartitionKey || dmm.IsPrimaryKey; if (dmm.AllowNull && (dmm.DataType != EntityFieldType.String && dmm.DataType != EntityFieldType.EntityId && dmm.DataType != EntityFieldType.Binary && typeString != "object")) { typeString += "?"; } break; case EntityMemberType.EntityRef: EntityRefModel rm = (EntityRefModel)mm; if (rm.IsAggregationRef) { typeString = TypeHelper.Type_EntityBase; } else { if (rm.RefModelIds.Count == 0) //Todo:待移除,因误删除模型引用项导致异常 { typeString = TypeHelper.Type_EntityBase; } else { var targetModelNode = designTree.FindModelNode(ModelType.Entity, rm.RefModelIds[0]); typeString = $"{targetModelNode.AppNode.Model.Name}.Entities.{targetModelNode.Model.Name}"; } } break; case EntityMemberType.EntitySet: { EntitySetModel sm = (EntitySetModel)mm; var targetModelNode = designTree.FindModelNode(ModelType.Entity, sm.RefModelId); typeString = $"EntityList<{targetModelNode.AppNode.Model.Name}.Entities.{targetModelNode.Model.Name}>"; readOnly = true; } break; case EntityMemberType.AggregationRefField: typeString = "object"; readOnly = true; break; //case EntityMemberType.Formula: //case EntityMemberType.Aggregate: //FormulaModel fmm = mm as FormulaModel; //typeString = TypeService.GetEntityFieldValueType(fmm.DataType).FullName; //readOnly = true; //break; case EntityMemberType.Tracker: throw ExceptionHelper.NotImplemented(); //GetEntityMemberTypeStringAndReadOnly( // (mm as TrackerModel).TargetMember, ref typeString, ref readOnly); //readOnly = true; //break; case EntityMemberType.AutoNumber: typeString = "string"; readOnly = true; break; //case EntityMemberType.ImageRef: //typeString = TypeHelper.Type_IImageSource; //readOnly = false; //break; default: typeString = "object"; break; } }