/// <summary> /// 初始化类配置 /// </summary> /// <param name="classShape">类图形</param> /// <param name="project">所属项目</param> public EntityInfo(ClrType ctype, ClassDesignerInfo info) { _classType = ctype; _designerInfo = info; FillClassInfo(); InitPropertys(); }
/// <summary> /// 获取实体的文件名 /// </summary> /// <param name="table">实体表信息</param> /// <param name="doc">文档信息</param> /// <returns></returns> public static string GetRealFileName(DBTableInfo table, ClassDesignerInfo designerInfo) { string className = EntityFieldBase.ToPascalName(table.Name); FileInfo docfile = new FileInfo(designerInfo.SelectDocView.DocData.FileName); return(docfile.DirectoryName + "\\" + className + ".cs"); }
/// <summary> /// 从项目中删除文件 /// </summary> /// <param name="fileName"></param> /// <param name="project"></param> private static void RemoveFromProject(string fileName, ClassDesignerInfo info) { Project project = info.CurrentProject; FileInfo finfo = new FileInfo(project.FileName); fileName = fileName.Replace(finfo.DirectoryName, ""); string[] strPart = fileName.Split(new char[] { '\\' }); ProjectItems curProjects = project.ProjectItems; ProjectItem curItem = null; foreach (string part in strPart) { if (string.IsNullOrEmpty(part)) { continue; } curItem = FindItem(curProjects, part); if (curItem == null) { return; } curProjects = curItem.ProjectItems; } curItem.Delete(); }
/// <summary> /// 生成配置的文件名 /// </summary> /// <param name="curProject"></param> /// <param name="curDiagram"></param> public static string GetConfigFileName(ClassDesignerInfo info) { string dbName = GetDbName(info); string proFile = info.CurrentProject.FileName; FileInfo file = new FileInfo(proFile); string directory = file.DirectoryName; return(directory + "\\" + dbName + ".config.xml"); }
/// <summary> /// 加载其他配置信息 /// </summary> /// <param name="info"></param> private static void LoadConfig(ClassDesignerInfo cdinfo, DBConfigInfo info) { XmlDocument doc = new XmlDocument(); try { doc.Load(GetConfigFileName(cdinfo)); XmlNodeList lstConfig = doc.GetElementsByTagName("config"); if (lstConfig.Count > 0) { XmlNode config = lstConfig[0]; XmlAttribute att = att = config.Attributes["tier"]; if (att != null) { int tier = 1; if (int.TryParse(att.InnerText, out tier)) { info.Tier = Convert.ToInt32(att.InnerText); } else { info.Tier = 3; } } att = config.Attributes["isAllDal"]; if (att != null) { info.IsAllDal = (att.InnerText == "1"); } att = config.Attributes["entityToDirectory"]; if (att != null) { info.EntityToDirectory = (att.InnerText == "1"); } att = config.Attributes["summary"]; if (att != null) { int summary = (int)SummaryShowItem.All; if (int.TryParse(att.InnerText, out summary)) { info.SummaryShow = (SummaryShowItem)summary; } else { info.SummaryShow = SummaryShowItem.All; } } } } catch { } }
/// <summary> /// 获取当前类图的库名 /// </summary> /// <param name="docView"></param> /// <returns></returns> public static string GetDbName(ClassDesignerInfo info) { FileInfo docFile = new FileInfo(info.SelectDocView.DocData.FileName); string dbName = docFile.Name; int dot = dbName.IndexOf('.'); if (dot > 0) { dbName = dbName.Substring(0, dot); } return(dbName); }
/// <summary> /// 获取项目项 /// </summary> /// <param name="project">项目</param> /// <param name="fileName">文件名</param> /// <returns></returns> public static EnvDTE.ProjectItem GetProjectItemByFileName(ClassDesignerInfo info, string fileName) { Project project = info.CurrentProject; foreach (EnvDTE.ProjectItem item in project.ProjectItems) { EnvDTE.ProjectItem res = GetProjectItemByFileName(item, fileName); if (res != null) { return(res); } } return(null); }
/// <summary> /// 初始化类配置 /// </summary> /// <param name="classShape">类图形</param> /// <param name="project">所属项目</param> public EntityConfig(ClrType ctype, ClassDesignerInfo info) { _designerInfo = info; //_classShape = classShape; _classType = ctype; FillClassInfo(); InitField(); InitPropertys(); InitMethods(); FillBaseTypeGenericArgs(ctype, _lstGenericArgs); //_currentProject = project; //_currentDiagram = currentDiagram; }
/// <summary> /// 实体信息 /// </summary> /// <param name="belong">所属的数据库信息</param> public DBEntityInfo(string entityNamespace, DBTableInfo belong, ClassDesignerInfo designerInfo, DBConfigInfo currentDBConfigInfo, string baseType) { _belongTable = belong; _entityNamespace = entityNamespace; //_docView = docView; //_currentProject = currentProject; _designerInfo = designerInfo; _currentDBConfigInfo = currentDBConfigInfo; _baseType = baseType; InitInfo(); //_tiers = tiers; FilterBaseTypeParam(); }
/// <summary> /// 更新类信息 /// </summary> /// <param name="ctype"></param> /// <param name="project"></param> /// <param name="currentDiagram"></param> /// <returns></returns> public static EntityConfig GetEntityConfigByTable(ClrType ctype, ClassDesignerInfo desinfo) { EntityConfig entity = new EntityConfig(ctype, desinfo); //entity.DesignerInfo.SelectDocView = selectDocView; if (string.IsNullOrEmpty(entity.TableName)) { return(null); } DBInfo db = entity.DbInfo.CreateDBInfo(); List <string> selTab = new List <string>(); selTab.Add(entity.TableName); List <DBTableInfo> lstGen = TableChecker.GetTableInfo(db, selTab); if (lstGen.Count > 0) { DBTableInfo info = lstGen[0]; Dictionary <string, EntityParamField> dicParam = entity.GetParamMapField(); entity._dbParams = new List <EntityParam>(); foreach (EntityParam prm in info.Params) { string paramName = prm.ParamName; if (dicParam.ContainsKey(paramName)) { continue; } entity._dbParams.Add(prm); } Dictionary <string, EntityRelationItem> dicRelation = entity.GetRelationmMapField(); entity._dbRelations = new List <TableRelationAttribute>(); foreach (TableRelationAttribute tr in info.RelationItems) { string key = EntityFieldBase.ToPascalName(tr.TargetTable) + ":" + EntityFieldBase.ToPascalName(tr.SourceName) + ":" + EntityFieldBase.ToPascalName(tr.TargetName); if (dicRelation.ContainsKey(key)) { continue; } entity._dbRelations.Add(tr); } } return(entity); }
public GrneraterBase(DBEntityInfo entity, ClassDesignerInfo info) { _table = entity.ToTableInfo(); _className = entity.ClassName; DesignerInfo = info; _entityBaseTypeName = GetBaseTypeName(entity.BaseType); _entityBaseTypeShortName = GetBaseTypeShortName(entity.BaseType); _entityFileName = entity.FileName; _entityNamespace = entity.EntityNamespace; _baseNamespace = GetBaseTypeNameSpace(entity.BaseType); _BQLEntityNamespace = entity.EntityNamespace + ".BQLEntity"; _businessNamespace = entity.EntityNamespace + ".Business"; _dataAccessNamespace = entity.EntityNamespace + ".DataAccess"; _DBName = entity.CurrentDBConfigInfo.DbName; _dbConfig = entity.CurrentDBConfigInfo; }
/// <summary> /// 获取类的自身和基类集合 /// </summary> /// <param name="type"></param> /// <returns></returns> public static Stack <EntityConfig> GetEntity(EntityConfig entity, ClassDesignerInfo info) { Stack <EntityConfig> stkConfig = new Stack <EntityConfig>(); ClrType curType = entity.ClassType; string typeName; while (curType != null) { stkConfig.Push(entity); curType = EntityConfig.GetBaseClass(curType, out typeName); if (EntityConfig.IsSystemType(curType)) { break; } entity = new EntityConfig(curType, info); } return(stkConfig); }
/// <summary> /// 填充字段和映射信息 /// </summary> /// <param name="cls"></param> /// <param name="designerInfo"></param> /// <param name="dicParam"></param> /// <param name="dicRelation"></param> public static void FillBaseTypeParam(string type, ClassDesignerInfo designerInfo, Dictionary <string, EntityParamField> dicParam, Dictionary <string, EntityRelationItem> dicRelation) { if (type == typeof(EntityBase).FullName || type == typeof(ThinModelBase).FullName) { return; } ClrClass cls = Connect.FindClrClassByName(type, designerInfo.SelectedDiagram); if (cls == null) { return; } EntityConfig entity = new EntityConfig(cls, designerInfo); if (!entity.HasConfig) { return; } foreach (EntityParamField ep in entity.EParamFields) { if (!ep.IsGenerate) { continue; } dicParam[ep.ParamName] = ep; } foreach (EntityRelationItem er in entity.ERelation) { if (!er.IsGenerate) { continue; } string key = er.SourceProperty + "_" + er.TargetProperty; dicRelation[key] = er; } FillBaseTypeParam(entity.BaseTypeName, designerInfo, dicParam, dicRelation); }
/// <summary> /// 加载数据库信息 /// </summary> /// <param name="curProject">当前工程</param> /// <param name="curDiagram">当前图</param> /// <returns></returns> public static DBConfigInfo LoadInfo(ClassDesignerInfo info) { if (info.CurrentProject == null || info.SelectDocView == null) { return(null); } string xmlFieName = GetFileName(info); DBConfigInfo ret = null; XmlDocument doc = new XmlDocument(); try { doc.Load(xmlFieName); ret = LoadInfo(doc); LoadConfig(info, ret); ret.FileName = xmlFieName; } catch { } return(ret); }
/// <summary> /// 获取实体的文件名 /// </summary> /// <param name="table">实体表信息</param> /// <param name="doc">文档信息</param> /// <returns></returns> public static string GetEntityRealFileName(DBTableInfo table, DBConfigInfo db, ClassDesignerInfo designerInfo) { string className = EntityFieldBase.ToPascalName(table.Name); FileInfo docfile = new FileInfo(designerInfo.SelectDocView.DocData.FileName); if (db.EntityToDirectory) { return(docfile.DirectoryName + "\\Entity\\" + className + ".cs"); } return(docfile.DirectoryName + "\\" + className + ".cs"); }
public Generate3Tier(DBEntityInfo entity, ClassDesignerInfo info) : base(entity, info) { dmt = new DataAccessMappingConfig(entity, info); }
/// <summary> /// UI配置信息 /// </summary> /// <param name="config">配置的XML</param> public UIConfigItem(XmlDocument config, ClassDesignerInfo desinfo) { _designerInfo = desinfo; InitConfig(config); }
public BQLEntityGenerater(DBEntityInfo config, ClassDesignerInfo info) : base(config, info) { }
public DataAccessMappingConfig(DBEntityInfo entity, ClassDesignerInfo info) : base(entity, info) { Init(); }