/// <summary> /// Obtiene resultado procedimiento almacenado y se le dan parametros manuales, luego convierte a la clase señalada, siempre en relacion a los campos resultado de la query sean iguales a los del objeto /// </summary> /// <param name="cmd">string</param> /// <param name="_tipoClase">type</param> /// <param name="dParameters">dictionary</param> /// <returns></returns> public static dynamic Obtener_Objeto_Procedimiento(PROCESO_SP _sp, Type _tipoClase, Dictionary <string, object> dParameters) { try { string sp_nombre = dSP[_sp]; dynamic lista = Crear_Lista(_tipoClase); if (string.IsNullOrEmpty(sp_nombre)) { throw new Exception(); } using (SqlConnection cnn = Corp.Datos.Conexion.ObtieneConexion("CF")) { SqlCommand command = cnn.CreateCommand(); command.CommandText = sp_nombre; command.CommandType = CommandType.StoredProcedure; if (dParameters.Count > 0) { dParameters.ToList().ForEach(p => command.Parameters.Add(string.Format("@{0}", p.Key), d_tipo[p.Value.GetType()]).Value = p.Value); } SqlDataReader rdr = command.ExecuteReader(); DataTable dt = new DataTable(); dt.Load(rdr); var _type_of_data = Activator.CreateInstance(_tipoClase); List <string> l_fields = Obtener_Fields(_tipoClase); Dictionary <string, FieldInfo> d_field_infos = Obtener_Field_Infos(_tipoClase); dt.AsEnumerable().ToList().ForEach(row => { dynamic _obj = Crear_Obj(_type_of_data, _tipoClase); l_fields.ForEach(p => { if (row.Table.Columns.Contains(p)) { Type _tipo_campo = d_field_infos[p].FieldType; var _type_of_data_campo = _tipo_campo != typeof(string) ? Activator.CreateInstance(_tipo_campo) : string.Empty; dynamic field_value = Obtener_Valor_Row(row, p, _tipoClase, _type_of_data_campo); if (field_value != null) { Setear_Campo(p, _obj, field_value, _tipoClase); } } }); lista.Add(_obj); }); } return(lista); } catch (Exception ex) { return(null); } }
public static int Eliminar_Objeto(SqlConnection sqlCon, SqlTransaction sqlTran, PROCESO_SP _sp, DateTime FechaCarga) { try { string sp_nombre = dSP[_sp]; var cmd_transaccion = new SqlCommand(sp_nombre, sqlCon, sqlTran) { CommandType = System.Data.CommandType.StoredProcedure }; cmd_transaccion.Parameters.Add("@FechaCarga", SqlDbType.DateTime).Value = FechaCarga; return(Convert.ToInt32(cmd_transaccion.ExecuteScalar())); } catch (Exception ex) { return(-1); } }
public static string Establecer_Linea_Objeto(dynamic obj, Type _tipoClase, List <string> l_no_considerados, SqlConnection sqlCon, SqlTransaction sqlTran, PROCESO_SP _sp) { try { string sp_nombre = dSP[_sp]; var l_fields = _tipoClase.GetFields().Select(p => p.Name).ToList(); var cmd_transaccion = new SqlCommand(sp_nombre, sqlCon, sqlTran) { CommandType = System.Data.CommandType.StoredProcedure }; l_fields.Where(p => !l_no_considerados.Contains(p)).ToList().ForEach(p => { cmd_transaccion.Parameters.Add(string.Format("@{0}", p), d_tipo[Obtener_Campo_Type(p, _tipoClase)]).Value = Obtener_Campo(p, obj, _tipoClase); }); return(cmd_transaccion.ExecuteScalar().ToString()); } catch (Exception ex) { return("-1"); } }