예제 #1
0
 /// <summary>
 /// 初始化类配置
 /// </summary>
 /// <param name="classShape">类图形</param>
 /// <param name="project">所属项目</param>
 public EntityInfo(ClrType ctype, ClassDesignerInfo info)
 {
     _classType    = ctype;
     _designerInfo = info;
     FillClassInfo();
     InitPropertys();
 }
예제 #2
0
        /// <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");
        }
예제 #3
0
        /// <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();
        }
예제 #4
0
        /// <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");
        }
예제 #5
0
        /// <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
            {
            }
        }
예제 #6
0
        /// <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);
        }
예제 #7
0
        /// <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);
        }
예제 #8
0
        /// <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;
        }
예제 #9
0
 /// <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();
 }
예제 #10
0
        /// <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);
        }
예제 #11
0
        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;
        }
예제 #12
0
        /// <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);
        }
예제 #13
0
        /// <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);
        }
예제 #14
0
        /// <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);
        }
예제 #15
0
        /// <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");
        }
예제 #16
0
 public Generate3Tier(DBEntityInfo entity, ClassDesignerInfo info)
     : base(entity, info)
 {
     dmt = new DataAccessMappingConfig(entity, info);
 }
예제 #17
0
 /// <summary>
 /// UI配置信息
 /// </summary>
 /// <param name="config">配置的XML</param>
 public UIConfigItem(XmlDocument config, ClassDesignerInfo desinfo)
 {
     _designerInfo = desinfo;
     InitConfig(config);
 }
예제 #18
0
 public BQLEntityGenerater(DBEntityInfo config, ClassDesignerInfo info)
     : base(config, info)
 {
 }
 public DataAccessMappingConfig(DBEntityInfo entity, ClassDesignerInfo info)
     : base(entity, info)
 {
     Init();
 }