static void Main(string[] args) { //Console.WriteLine(EventsDateTimeRecipient().Content.ToString()); //Console.WriteLine(SendSimpleMessage().Content.ToString()); Console.WriteLine("Hello World!"); RootSP lstProcedimientos = ProcedimientosJSON(); /*Procedimientos proc = lstProcedimientos.Find(x => x.procedimientos[0].Nombre.Contains("EmpleadoPerfilDTO"))*/ ; CapaDatos capaDatos = new CapaDatos(); EmpleadoPerfilDTO emp = new EmpleadoPerfilDTO(); emp.Nomina = "10001595"; //capaDatos.Generico(proc, ref emp); Type typeEmp = Type.GetType("ConsoleApp1.EmpleadoPerfilDTO"); Type typePerfiles = Type.GetType("ConsoleApp1.PerfilesDTO"); Type typePerfil = Type.GetType("ConsoleApp1.PerfilesDTO"); dynamic dynEmp; dynamic dynPerfiles; dynamic dynPerfil; using (OracleConnection cnn = new OracleConnection(CapaDatos.connectionString)) { cnn.Open(); var p = new OracleDynamicParameters(); p.Add("p_empleado", dbType: OracleDbType.RefCursor, direction: ParameterDirection.Output); p.Add("p_nomina", "10001595", dbType: OracleDbType.Varchar2, direction: ParameterDirection.Input); p.Add("p_perfil", dbType: OracleDbType.RefCursor, direction: ParameterDirection.Output); p.Add("p_perfiles", dbType: OracleDbType.RefCursor, direction: ParameterDirection.Output); p.Add("p_estatus", null, dbType: OracleDbType.Int32, direction: ParameterDirection.Output, 20); p.Add("p_mensaje", null, dbType: OracleDbType.Varchar2, direction: ParameterDirection.Output, 20); using (var multi = cnn.QueryMultiple("ENLACOMS.PKG_EJEMPLO_DAPPER.EMPLEADO_PERFILES", param: p, commandType: CommandType.StoredProcedure)) { //emp = multi.ReadSingle<Empleado>(); //emp.perfiles = multi.Read<Perfiles>().AsList(); dynEmp = multi.ReadSingle(typeEmp); dynPerfiles = multi.Read(typePerfiles).AsList(); dynPerfil = multi.ReadFirst(typePerfil); emp = dynEmp; emp.Perfil = dynPerfil; emp.Perfiles = dynPerfiles; } } }
public void Generico(Procedimientos proc, ref EmpleadoPerfilDTO emp) { using (OracleConnection cnn = new OracleConnection(connectionString)) { cnn.Open(); var p = new OracleDynamicParameters(); //Asigna parametro de entrada foreach (Parametros parametro in proc.Parametros) { if (parametro.Direccion == ParameterDirection.InputOutput || parametro.Direccion == ParameterDirection.Input) { if (parametro.Valor == null) { AtributoEntidad atrEnt = parametro.AtributosEntd; object valorAtributo = emp.GetType().GetProperty(atrEnt.Atributo).GetValue(emp, null); p.Add(parametro.Nombre, valorAtributo, parametro.Tipo, parametro.Direccion, parametro.Tamanio); } else { p.Add(parametro.Nombre, parametro.Valor, parametro.Tipo, parametro.Direccion, parametro.Tamanio); } } else { p.Add(parametro.Nombre, parametro.Valor, parametro.Tipo, parametro.Direccion, parametro.Tamanio); } } using (var multi = cnn.QueryMultiple(proc.Procedimiento, param: p, commandType: CommandType.StoredProcedure)) { //Asigna valores de salida a la entidad foreach (Parametros parametro in proc.Parametros) { if (parametro.Direccion == ParameterDirection.InputOutput || parametro.Direccion == ParameterDirection.Output) { AtributoEntidad atrEnt = parametro.AtributosEntd; if (parametro.Tipo == OracleDbType.RefCursor) { if (atrEnt.Atributo != null) { //Type tipoLista = emp.GetType().GetProperty(atrEnt.Atributo).GetType(); //PerfilesDTO ppp = new PerfilesDTO(); //Type tipoLista2 = ppp.GetType(); Type tipoLista = Type.GetType(atrEnt.AtributoTipo); if (atrEnt.Coleccion.Equals("Si")) { List <PerfilesDTO> dd = multi.Read <PerfilesDTO>().AsList(); //dynamic dd = multi.Read(tipoLista).AsList(); emp.GetType().GetProperty(atrEnt.Atributo).SetValue(emp, dd); //emp.Perfiles = multi.Read<PerfilesDTO>().AsList(); } else { emp.GetType().GetProperty(atrEnt.Atributo).SetValue(emp, multi.ReadSingle(tipoLista)); } } else { emp = multi.ReadSingle <EmpleadoPerfilDTO>(); } } else { if (parametro.Tipo == OracleDbType.Varchar2) { emp.GetType().GetProperty(atrEnt.Atributo).SetValue(emp, p.Get <OracleString>(parametro.Nombre).ToString()); } if (parametro.Tipo == OracleDbType.Decimal) { emp.GetType().GetProperty(atrEnt.Atributo).SetValue(emp, p.Get <OracleDecimal>(parametro.Nombre).ToInt32()); } } } } } } }