public List <T> LoadData(T Obj, string strQueryCondition, int intCurrPage, string SPName, int PageSize, Dictionary <string, object> Params) { var Cols = new List <T>(); try { Conn.Open(); comm = new SqlCommand(SPName, Conn); comm.CommandTimeout = 2000; comm.CommandType = CommandType.StoredProcedure; comm.Parameters.Add("@CURRENTPAGE", SqlDbType.BigInt).Value = intCurrPage; comm.Parameters.Add("@PAGESIZE", SqlDbType.BigInt).Value = PageSize; comm.Parameters.Add("@STRQUERY", SqlDbType.VarChar, 4000).Value = strQueryCondition; if (Params != null) { foreach (string Key in Params.Keys) { comm.Parameters.Add(Key, SqlDbType.DateTime).Value = Params[Key]; } } dr = comm.ExecuteReader(); DynamicBuilder <T> DynamicBuilder = null; DynamicBuilder = DynamicBuilder <T> .CreateBuilder(dr); if (dr.HasRows) { while (dr.Read()) { T col = DynamicBuilder.Build(dr); // CreateInstanceT(); Cols.Add(col); } dr.NextResult(); //Record Count if (dr.HasRows) { while (dr.Read()) { TotalRecord = Convert.ToInt32(dr[0]); } } } } catch (Exception ex) { throw ex; } finally { Conn.Close(); } return(Cols); }
public List <T> LoadData(T Obj, string strQueryCondition, int intCurrPage, string SPName, int PageSize, string SortBy, string Sort) { var Cols = new List <T>(); try { Conn.Open(); comm = new SqlCommand(SPName, Conn); comm.CommandTimeout = 2000; comm.CommandType = CommandType.StoredProcedure; comm.Parameters.Add("@CURRENTPAGE", SqlDbType.BigInt).Value = intCurrPage; comm.Parameters.Add("@PAGESIZE", SqlDbType.BigInt).Value = PageSize; comm.Parameters.Add("@STRQUERY", SqlDbType.VarChar, 4000).Value = strQueryCondition; comm.Parameters.Add("@SORT_BY", SqlDbType.VarChar, 50).Value = SortBy; comm.Parameters.Add("@SORT", SqlDbType.VarChar, 50).Value = Sort; dr = comm.ExecuteReader(); DynamicBuilder <T> DynamicBuilder = null; DynamicBuilder = DynamicBuilder <T> .CreateBuilder(dr); if (dr.HasRows) { while (dr.Read()) { T col = DynamicBuilder.Build(dr); // CreateInstanceT(); } dr.NextResult(); //Record Count if (dr.HasRows) { while (dr.Read()) { TotalRecord = dr.GetInt32(0); } } } } catch (Exception ex) { throw ex; } finally { Conn.Close(); } return(Cols); }
public List <T> GetData(string SQL) { var Cols = new List <T>(); var conn = new SqlConnection(constr); try { conn.Open(); comm = new SqlCommand(SQL, conn); comm.CommandTimeout = 30000; comm.CommandType = CommandType.Text; dr = comm.ExecuteReader(); DynamicBuilder <T> DynamicBuilder = null; DynamicBuilder = DynamicBuilder <T> .CreateBuilder(dr); if (dr.HasRows) { while (dr.Read()) { T col = DynamicBuilder.Build(dr); // CreateInstanceT(); Cols.Add(col); } dr.NextResult(); //Record Count if (dr.HasRows) { while (dr.Read()) { TotalRecord = dr.GetInt32(0); } } } } catch (Exception ex) { throw ex; } finally { conn.Close(); } return(Cols); }
public static DynamicBuilder <T> CreateBuilder(IDataRecord dataRecord) { var dynamicBuilder = new DynamicBuilder <T>(); int i = 0; var method = new DynamicMethod("DynamicCreate", typeof(T), new[] { typeof(IDataRecord) }, typeof(T), true); ILGenerator generator = method.GetILGenerator(); LocalBuilder result = generator.DeclareLocal(typeof(T)); generator.Emit(OpCodes.Newobj, typeof(T).GetConstructor(Type.EmptyTypes)); generator.Emit(OpCodes.Stloc, result); for (i = 0; i <= dataRecord.FieldCount - 1; i++) { PropertyInfo propertyInfo = typeof(T).GetProperties().FirstOrDefault(x => x.Name.Contains(dataRecord.GetName(i))); //if (propertyInfo == null ) propertyInfo = typeof(T).GetProperty(dataRecord.GetName(i).ToUpper()); //if (propertyInfo == null) propertyInfo = typeof(T).GetProperty(dataRecord.GetName(i).ToLower()); Label endIfLabel = generator.DefineLabel(); if ((propertyInfo != null)) { if ((propertyInfo.GetSetMethod() != null)) { generator.Emit(OpCodes.Ldarg_0); generator.Emit(OpCodes.Ldc_I4, i); generator.Emit(OpCodes.Callvirt, isDBNullMethod); generator.Emit(OpCodes.Brtrue, endIfLabel); generator.Emit(OpCodes.Ldloc, result); generator.Emit(OpCodes.Ldarg_0); generator.Emit(OpCodes.Ldc_I4, i); generator.Emit(OpCodes.Callvirt, getValueMethod); Type dataType = dataRecord.GetFieldType(i); bool isNullable = false; if (propertyInfo.PropertyType.Name.ToLower().Contains("nullable")) { isNullable = true; } if (isNullable) { generator.Emit(OpCodes.Unbox_Any, getNullableType(dataType)); } else { generator.Emit(OpCodes.Unbox_Any, dataType); } generator.Emit(OpCodes.Callvirt, propertyInfo.GetSetMethod()); generator.MarkLabel(endIfLabel); } } } generator.Emit(OpCodes.Ldloc, result); generator.Emit(OpCodes.Ret); dynamicBuilder.handler = (Load)method.CreateDelegate(typeof(Load)); return(dynamicBuilder); }