示例#1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="_DBAdapter"></param>
        /// <param name="usePrefix">是否使用字段前辍 如 t1.Name</param>
        /// <param name="withTablePrefix">是否生按表生成前辍,关联时用 如Table__Name</param>
        /// <param name="memberName">别名,空则按字段名,没有AS</param>
        /// <param name="fieldName">自定义查询字段名,空则按Name</param>
        internal FieldMapping GetFieldMapping(DBAdapter.DBAdapterBase _DBAdapter, string usePrefix, bool withTablePrefix, string memberName, string fieldName = "")
        {
            //对于单表查询,对默认字段查询进行缓存
            if (memberName == MemberName && usePrefix == "t1.")
            {
                memberName = "";
            }
            bool cache = (usePrefix == "t1." && !withTablePrefix && (memberName == ""));

            if (cache)
            {
                if (defaultFieldMapping != null)
                {
                    return(defaultFieldMapping);
                }
            }
            string query = "";

            if (!string.IsNullOrEmpty(usePrefix))
            {
                //query += "{" + ModelType.FullName + "}";
                query = usePrefix;
            }
            var FieldMapping = new FieldMapping()
            {
                FieldName = MapingName, ResultName = memberName, PropertyType = PropertyType
            };

            if (string.IsNullOrEmpty(fieldName))
            {
                fieldName = withTablePrefix ? MapingName : _DBAdapter.FieldNameFormat(this);
            }
            if (string.IsNullOrEmpty(FieldMapping.ResultName))
            {
                FieldMapping.ResultName = MemberName;
            }
            query += fieldName;
            FieldMapping.QueryField = query;
            var mappNameFull = fieldName;

            if (!string.IsNullOrEmpty(memberName))
            {
                //MapingName = mapingName;
                mappNameFull = memberName;
            }

            if (withTablePrefix)
            {
                //mappNameFull = memberName;
                FieldMapping.ResultName = mappNameFull;
                mappNameFull            = GetTableFieldFormat(TableName, MemberName);//始终返回属性名
                //FieldMapping.QueryField = mappNameFull;
            }

            //MapingName = mappNameFull;
            //别名不为空或有表前辍
            if (!string.IsNullOrEmpty(memberName) || withTablePrefix)
            {
                FieldMapping.QueryFull = string.Format("{0} as {1}", query, mappNameFull);
            }
            else
            {
                if (MapingName != MemberName)//有别名时转为属性名
                {
                    query += " as " + MemberName;
                }
                FieldMapping.QueryFull = query;
            }
            if (cache)
            {
                defaultFieldMapping = FieldMapping;
            }
            return(FieldMapping);
        }