public List <dynamic> getDynamicQuery(int id, SearchOptions o) { ReportDefinition report = dbset.Single(a => a.ID == id); List <QueryMetadata> meta = MacheteAdoContext.getMetadata(report.sqlquery, _readonlyConnectionString); Type queryType = ILVoodoo.buildQueryType(meta); MethodInfo method = Type.GetType("Machete.Data.MacheteAdoContext") .GetMethod("SqlQuery", new[] { typeof(string), typeof(string), typeof(SqlParameter[]) }); MethodInfo man = method.MakeGenericMethod(queryType); dynamic dynamicQuery = man.Invoke(null, new object[] { report.sqlquery, _readonlyConnectionString, new[] { new SqlParameter { ParameterName = "beginDate", Value = o.beginDate }, new SqlParameter { ParameterName = "endDate", Value = o.endDate }, new SqlParameter { ParameterName = "dwccardnum", Value = o.dwccardnum } } }); var dynamicList = new List <dynamic>(); foreach (var row in dynamicQuery) { dynamicList.Add(row); } return(dynamicList); }
public void getDynamicQuery_test_all_metadata() { // arrange var reports = frb.ToFactory().ReportDefinitions.AsQueryable(); foreach (var r in reports) { var result = MacheteAdoContext.getMetadata(r.sqlquery, connectionString); Assert.IsTrue(result.Count > 2); } // act // assert }
public List <QueryMetadata> getColumns(string tableName) { return(MacheteAdoContext.getMetadata($"select top 0 * from {tableName}", _readonlyConnectionString)); }