Example #1
0
        /// <summary>
        /// 判断是否多对一
        /// </summary>
        /// <param name="source"></param>
        /// <returns></returns>
        public static bool IsManyOne(Member source)
        {
            DataTypeInfos info = EntityFieldBase.GetTypeInfo(source);


            return(info == null);
        }
Example #2
0
        /// <summary>
        /// 填充类信息
        /// </summary>
        private void FillClassInfo()
        {
            ClrType ctype = _classType;

            _className = ctype.Name;

            _baseType = GetBaseClass(ctype, out _baseTypeName);

            _fileName = GetFileName(ctype, out _cp);
            EnvDTE.ProjectItem classItem = GetProjectItemByFileName(DesignerInfo, _fileName);
            //foreach (CodeElementPosition cp in ctype.SourceCodePositions)
            //{
            //    if (cp.FileName.IndexOf(".extend.cs") <0)
            //    {
            //        _fileName = cp.FileName;

            //        _cp = cp;
            //        break;
            //    }
            //}
            _namespace    = ctype.OwnerNamespace.Name;
            _summary      = ctype.DocSummary;
            _tableName    = EntityFieldBase.ToCamelName(_className);
            _lstSource    = CodeFileHelper.ReadFile(FileName);
            _fileEncoding = CodeFileHelper.GetFileEncoding(_fileName);
            if (ctype.Generic)
            {
                InitGeneric(ctype, _dicGenericInfo);
            }
        }
Example #3
0
        /// <summary>
        /// 获取字段的配置信息
        /// </summary>
        /// <param name="fInfo"></param>
        private void GetEntityParamInfo(ClrField fInfo)
        {
            _propertyName = ToPascalName(FieldName);
            _paramName    = FieldName.Trim('_');
            DataTypeInfos info = EntityFieldBase.GetTypeInfo(fInfo);

            if (info != null)
            {
                _dbType = info.DbTypes[0].ToString();
                _length = info.DbLength;
            }
        }
Example #4
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);
        }
Example #5
0
        /// <summary>
        /// 添加映射信息
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="classNode"></param>
        private static void AppendRelationInfo(List <TableRelationAttribute> relationItems, XmlNode classNode)
        {
            XmlDocument doc = classNode.OwnerDocument;

            if (relationItems == null)
            {
                return;
            }
            foreach (TableRelationAttribute field in relationItems)
            {
                //EntityParamField field = kp.Value;
                XmlNode node = doc.CreateElement("relation");
                classNode.AppendChild(node);

                XmlAttribute att = doc.CreateAttribute("FieldName");//字段名
                att.InnerText = field.FieldName;
                node.Attributes.Append(att);

                att           = doc.CreateAttribute("PropertyName");//对应的属性名名
                att.InnerText = field.PropertyName;
                node.Attributes.Append(att);

                att           = doc.CreateAttribute("SourceProperty");//数据库类型
                att.InnerText = EntityFieldBase.ToPascalName(field.SourceName);
                node.Attributes.Append(att);

                att           = doc.CreateAttribute("TargetProperty");//数据库类型长度
                att.InnerText = EntityFieldBase.ToPascalName(field.TargetName);
                node.Attributes.Append(att);

                att           = doc.CreateAttribute("IsToDB");//数据库类型长度
                att.InnerText = field.IsToDB ? "1" : "0";
                node.Attributes.Append(att);

                att           = doc.CreateAttribute("IsParent");//数据库类型长度
                att.InnerText = field.IsParent ? "1" : "0";
                node.Attributes.Append(att);

                att           = doc.CreateAttribute("Description");//属性注释
                att.InnerText = field.Description;
                node.Attributes.Append(att);
            }
        }
Example #6
0
        /// <summary>
        /// 初始化字段信息
        /// </summary>
        private void InitField()
        {
            List <ClrField> lstFields = GetAllMember <ClrField>(_classType, false);

            _fields = new Dictionary <string, CodeElementPosition>();
            for (int j = 0; j < lstFields.Count; j++)
            {
                ClrField field = lstFields[j];
                if (field == null)
                {
                    continue;
                }
                if (field.SourceCodePositions == null)
                {
                    continue;
                }
                foreach (CodeElementPosition cp in field.SourceCodePositions)
                {
                    if (!IsManyOne(field))
                    {
                        EntityParamField epf = new EntityParamField(cp, field, this);
                        epf.AllowNull = EntityFieldBase.IsNullProperty(field.MemberTypeShortName);
                        _eParamFields.Add(epf);
                    }
                    else
                    {
                        EntityRelationItem erf = new EntityRelationItem(cp, field, this);
                        _eRelation.Add(erf);
                    }

                    _fields[field.Name] = cp;
                }
                _eParamFields.SortItem();
                _eRelation.SortItem();
            }
            _hasConfig = EntityMappingConfig.LoadConfigInfo(this);
        }