Revision: 41351
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at February 16, 2011 23:40 by vriesdewie
Initial Code
private static Object GetClassInstance(Assembly assembly, String className, Object args) { Object result = null; if (assembly == null || String.IsNullOrEmpty(className)) return null; try { foreach (Type type in assembly.GetTypes()) { if (type.IsClass && type.FullName.EndsWith("." + className)) { if (args == null) { // Use the raw null value for the args parameter. A parameter // of type Object with a value of null causes an exception. // Also an empty list of parameters like Object args[] = new {}; // causes an exception. result = Activator.CreateInstance(type, null); } else result = Activator.CreateInstance(type, args); break; } } } catch { result = null; } return result; } private static String GetQuery(EntitySpaces.Interfaces.esDynamicQuery qry) { Assembly assembly; esDataRequest r = new esDataRequest(); Object[] args = new Object[] { r }; String sql = String.Empty; String className = "QueryBuilder"; try { qry.GetType().InvokeMember("PopulateRequest", BindingFlags.NonPublic | BindingFlags.InvokeMethod | BindingFlags.Instance, null, qry, args); String assemblyName = qry.es.Connection.ProviderSignature.DataProviderName; args = new Object[] { qry, new SqlCommand(), 1 }; assembly = Assembly.Load(assemblyName); Object qb = GetClassInstance(assembly, className, null); sql = qb.GetType().InvokeMember("BuildQuery", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.InvokeMethod, null, qb, args).ToString(); } catch { sql = null; } return sql; }
Initial URL
Initial Description
After having constructed a query, this piece of code can obtain the SQL statement before executing the query.
Initial Title
Get SQL of Dynamic Query in EntitySpaces
Initial Tags
Initial Language
C#