示例#1
0
 public static Dictionary <string, MethodHandler> GetMethos(DBAdapter.DBAdapterBase _dBAdapter)
 {
     if (!methodHandlers.ContainsKey(_dBAdapter))
     {
         methodHandlers.Add(_dBAdapter, new MethodAnalyze(_dBAdapter));
     }
     return(methodHandlers[_dBAdapter].Methods());
 }
示例#2
0
 public MethodAnalyze(DBAdapter.DBAdapterBase _dBAdapter)
 {
     //var table = TypeCache.GetTable(typeof(T));
     dBAdapter = _dBAdapter;
     if (dBAdapter == null)
     {
         throw new CRLException("dBAdapter尚未初始化");
     }
 }
示例#3
0
        public MethodAnalyze()
        {
            var table = TypeCache.GetTable(typeof(T));

            dBAdapter = table.DBAdapter;
            if (dBAdapter == null)
            {
                throw new Exception("dBAdapter尚未初始化");
            }
        }
示例#4
0
        /// <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;
            }
        }
示例#5
0
 public ExpressionVisitor(LambdaQueryBase _lambdaQueryBase)
 {
     lambdaQueryBase = _lambdaQueryBase;
     __DBAdapter     = lambdaQueryBase.__DBAdapter;
     dbContext       = __DBAdapter.dbContext;
 }
示例#6
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);
        }
示例#7
0
 public ExpressionVisitor(DBAdapter.DBAdapterBase _DBAdapter, Dictionary <Type, string> __Prefixs)
 {
     Prefixs     = __Prefixs;
     __DBAdapter = _DBAdapter;
     dbContext   = _DBAdapter.dbContext;
 }