public static DataTable ExecuteReader(Model mdl) { DataTable dt = new DataTable(); using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["TestConnectionString"].ToString())) { cn.Open(); SqlCommand cm = new SqlCommand(mdl.StoreProcedureName.ToString(), cn); cm.CommandType = CommandType.StoredProcedure; foreach (SqlParameter p in cm.Parameters) { if (p.Direction == ParameterDirection.Input || p.Direction == ParameterDirection.InputOutput) { foreach (PropertyInfo pi in mdl.GetType().GetProperties()) { if (p.ParameterName.ToLower().Replace("@", "") == pi.Name.ToLower()) { p.Value = FormatObject(p, pi.GetValue(mdl, null)); break; } } } } dt.Load(cm.ExecuteReader()); } return dt; }