public static Dictionary <string, MethodHandler> GetMethos(DBAdapter.DBAdapterBase _dBAdapter) { if (!methodHandlers.ContainsKey(_dBAdapter)) { methodHandlers.Add(_dBAdapter, new MethodAnalyze(_dBAdapter)); } return(methodHandlers[_dBAdapter].Methods()); }
public MethodAnalyze(DBAdapter.DBAdapterBase _dBAdapter) { //var table = TypeCache.GetTable(typeof(T)); dBAdapter = _dBAdapter; if (dBAdapter == null) { throw new CRLException("dBAdapter尚未初始化"); } }
public MethodAnalyze() { var table = TypeCache.GetTable(typeof(T)); dBAdapter = table.DBAdapter; if (dBAdapter == null) { throw new Exception("dBAdapter尚未初始化"); } }
/// <summary> /// /// </summary> /// <param name="_DBAdapter"></param> /// <param name="usePrefix">是否使用字段前辍 如 t1.Name</param> /// <param name="withTablePrefix">是否生按表生成前辍,关联时用 如Table__Name</param> /// <param name="mapingName">别名,空则按字段名,没有AS</param> /// <param name="fieldName">自定义查询字段名,空则按Name</param> internal void SetFieldQueryScript2(DBAdapter.DBAdapterBase _DBAdapter, string usePrefix, bool withTablePrefix, string mapingName, string fieldName = "") { string query = ""; if (!string.IsNullOrEmpty(usePrefix)) { //query += "{" + ModelType.FullName + "}"; query += usePrefix; } if (string.IsNullOrEmpty(fieldName)) { fieldName = withTablePrefix ? MapingName : _DBAdapter.KeyWordFormat(MapingName); } //判断虚拟字段 if (FieldType == Attribute.FieldType.虚拟字段) { query = VirtualField.Replace("{" + ModelType.FullName + "}", usePrefix);//替换前辍 mapingName = MemberName; } else { query += fieldName; } QueryField = query; var mappNameFull = fieldName; if (!string.IsNullOrEmpty(mapingName)) { //MapingName = mapingName; mappNameFull = mapingName; } if (withTablePrefix) { mappNameFull = GetTableFieldFormat(TableName, mappNameFull); } //MapingName = mappNameFull; //别名不为空或有表前辍 if (!string.IsNullOrEmpty(mapingName) || withTablePrefix) { QueryFullScript = string.Format("{0} as {1}", query, mappNameFull); } else { QueryFullScript = query; } }
public ExpressionVisitor(LambdaQueryBase _lambdaQueryBase) { lambdaQueryBase = _lambdaQueryBase; __DBAdapter = lambdaQueryBase.__DBAdapter; dbContext = __DBAdapter.dbContext; }
/// <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); }
public ExpressionVisitor(DBAdapter.DBAdapterBase _DBAdapter, Dictionary <Type, string> __Prefixs) { Prefixs = __Prefixs; __DBAdapter = _DBAdapter; dbContext = _DBAdapter.dbContext; }