/// <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); }