public async Task <List <T> > SimpleSQLQueryAsync <T>(SimpleSQLQueryModel queryModel) where T : class, new()
        {
            var result = await client.Sql.QueryAsync(t => t.FetchSize(queryModel.FetchSize).Format(queryModel.Format.ToString()).Query(queryModel.Sql)).ConfigureAwait(false);

            var      rows       = result.Rows.ToList();
            var      colunms    = result.Columns.ToList();
            List <T> entityList = new List <T>();

            GetDebugInfo(result);
            foreach (var row in rows)
            {
                T   entity = new T();
                int index  = 0;
                foreach (var column in colunms)
                {
                    if (!column.Name.Contains("."))
                    {
                        var val        = row[index];
                        var emitSetter = EmitHelper.EmitSetter <T>(column.Name);
                        if (column.Type == "text" || column.Type == "keyword")
                        {
                            emitSetter(entity, val.As <string>());
                        }
                        else if (column.Type == "datetime")
                        {
                            emitSetter(entity, val.As <DateTime>());
                        }
                        else if (column.Type == "long")
                        {
                            emitSetter(entity, val.As <long>());
                        }
                        else if (column.Type == "integer")
                        {
                            emitSetter(entity, val.As <int>());
                        }
                        else if (column.Type == "float")
                        {
                            emitSetter(entity, val.As <float>());
                        }
                        else if (column.Type == "double")
                        {
                            emitSetter(entity, val.As <double>());
                        }
                        else if (column.Type == "boolean")
                        {
                            emitSetter(entity, val.As <bool>());
                        }
                    }
                    index++;
                }
                entityList.Add(entity);
            }
            return(entityList);
        }
Example #2
0
        public async Task <List <T> > SimpleSqlQueryAsync <T>(SimpleSQLQueryModel queryModel) where T : class, new()
        {
            var result = await client.Sql.QueryAsync(t => t.FetchSize(queryModel.FetchSize).Format(queryModel.Format.ToString()).Query(queryModel.Sql)).ConfigureAwait(false);

            var      rows       = result.Rows.ToList();
            var      colunms    = result.Columns.ToList();
            List <T> entityList = new List <T>();

            GetDebugInfo(result);
            for (int i = 0; i < rows.Count; i++)
            {
                var row    = rows[i];
                T   entity = new T();
                for (int j = 0; j < colunms.Count; j++)
                {
                    var column = colunms[j];
                    var val    = row[j];
                    if (!column.Name.Contains("."))
                    {
                        var emitSetter = EmitHelper.EmitSetter <T>(column.Name);
                        emitSetter(entity, GetValue(column, val));
                    }
                    else
                    {
                        var type = typeof(T);
                        var pop  = type.GetProperties(BindingFlags.Instance | BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.NonPublic);
                        for (int n = 0; n < pop.Length; n++)
                        {
                            string childClass = column.Name.Split('.')[0];
                            string childField = column.Name.Split('.')[1];
                            object childValue = GetValue(column, val);
                            if (pop[n].Name.ToLower() == childClass.ToLower())
                            {
                                var childType        = pop[n].PropertyType;
                                var childEntityClass = childType.Assembly.CreateInstance(childType.FullName, true);
                                var popchilds        = childType.GetProperties(BindingFlags.Instance | BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.NonPublic);
                                var popchild         = popchilds.First(t => t.Name.ToLower() == childField.ToLower());
                                var emitSetter       = EmitHelper.CreatePropertiesFunc(popchilds);
                                popchild.SetValue(childEntityClass, childValue);
                                pop[n].SetValue(entity, childEntityClass);
                            }
                        }
                    }
                }
                entityList.Add(entity);
            }
            return(entityList);
        }
 /// <summary>
 /// 简单查询
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="queryModel"></param>
 /// <returns></returns>
 public async Task <List <T> > SimpleSqlQueryAsync <T>(SimpleSQLQueryModel queryModel) where T : class, new()
 {
     return(await repository.SimpleSqlQueryAsync <T>(queryModel).ConfigureAwait(false));
 }
Example #4
0
        public async Task <ActionResult> SimpleSqlQueryAsync([FromQuery] SimpleSQLQueryModel queryModel)
        {
            var queryResponse = await queryDemoService.SimpleSqlQueryAsync <DemoEntity>(queryModel).ConfigureAwait(false);

            return(Ok(queryResponse));
        }
Example #5
0
        public async Task <string> SqlQueryToJsonAsync(SimpleSQLQueryModel queryModel)
        {
            var result = await client.Sql.QueryAsync(t => t.FetchSize(queryModel.FetchSize).Format(queryModel.Format.ToString()).Query(queryModel.Sql)).ConfigureAwait(false);

            var rows       = result.Rows.ToList();
            var colunms    = result.Columns.ToList();
            var jsonString = new StringBuilder();

            GetDebugInfo(result);
            jsonString.Append("[");
            for (int i = 0; i < rows.Count; i++)
            {
                var row = rows[i];
                jsonString.Append("{");
                for (int j = 0; j < colunms.Count; j++)
                {
                    var column = colunms[j];

                    if (!column.Name.Contains("."))
                    {
                        var  val       = row[j];
                        bool isLastOne = (j == colunms.Count - 1);

                        var comma = isLastOne ? "" : ",";
                        if (column.Type == "text" || column.Type == "keyword")
                        {
                            jsonString.Append($"\"{column.Name}\":\"{ val.As<string>()}\"{comma}");
                        }
                        else if (column.Type == "datetime")
                        {
                            jsonString.Append($"\"{column.Name}\":\"{ val.As<DateTime>()}\"{comma}");
                        }
                        else if (column.Type == "long")
                        {
                            jsonString.Append($"\"{column.Name}\":{ val.As<long>()}{comma}");
                        }
                        else if (column.Type == "integer")
                        {
                            jsonString.Append($"\"{column.Name}\":{ val.As<int>()}{comma}");
                        }
                        else if (column.Type == "float")
                        {
                            jsonString.Append($"\"{column.Name}\":{ val.As<float>()}{comma}");
                        }
                        else if (column.Type == "double")
                        {
                            jsonString.Append($"\"{column.Name}\":{ val.As<double>()}{comma}");
                        }
                        else if (column.Type == "boolean")
                        {
                            var boolVal = val.As <bool>().ToString().ToLower();
                            jsonString.Append($"\"{column.Name}\":{ boolVal}{comma}");
                        }
                        else
                        {
                            jsonString.Append($"\"{column.Name}\":\"{ val.As<string>()}\"{comma}");
                        }
                    }
                    else
                    {
                    }
                    if (i == rows.Count - 1)
                    {
                        jsonString.Append("}");
                    }
                    else
                    {
                        jsonString.Append("},");
                    }
                }
            }
            jsonString.Append("]");
            return(jsonString.ToString());
        }