npgsql lista serializable

Ricardo Javier Aranibar León <[email protected]> Thu, 30 Jun 2011 01:09:42 -0400
Newsgroups gmane.comp.gnome.mono.hispano
Message-ID <[email protected]>
Hola lista

Tengo esta funcion que me devuelve en una lista los datos serializados de
una consulta este método esta implementado con Oracle
como podría traducirlo o como podría hacerlo utilizando npgsql, ya que en
npgsql no se tiene la función ExecuteXmlReader,XmlCommandType y
OracleXmlCommandType
alguna sugerencia les estaré muy agradecido

saludos
Ricardo

     /// <summary>
    /// Lee un objeto a partir de su ID
    /// </summary>
    /// <typeparam name="T">Tipo de la colexión de Objetos</typeparam>
    /// <param name="iD">ID del objeto</param>
    /// <param name="TableName">Nombre de la Tabla</param>
    /// <param name="singleType">Tipo de Objeto</param>
    /// <returns>Colexión de Objetos leidos</returns>
    public T Read<T>(Int64 iD, string TableName, Type singleType)
    {
      System.Reflection.PropertyInfo[] propiedades;
      String sqlText;
      XmlReader xmlReader;
      OracleCommand cmd = Connection.CreateCommand();
      XmlSerializer serializer = new XmlSerializer(typeof(T));

      try
      {
        propiedades = singleType.GetProperties();
        sqlText = "SELECT ";
        foreach (System.Reflection.PropertyInfo propiedad in propiedades)
        {
          if (propiedad.PropertyType.Namespace !=
"System.Collections.Generic")
          {
            sqlText = sqlText + propiedad.Name.ToUpper() + ",";
          }
        }
        sqlText = sqlText.Substring(0, sqlText.Length - 1);
        sqlText = sqlText + " FROM " + TableName + " WHERE ID = " +
Convert.ToString(iD);

        cmd.CommandText = sqlText;
        cmd.XmlCommandType = OracleXmlCommandType.Query;
        cmd.XmlQueryProperties.RootTag = typeof(T).Name;
        cmd.XmlQueryProperties.RowTag = singleType.Name;
        cmd.BindByName = true;
        xmlReader = cmd.ExecuteXmlReader();
        return (T)serializer.Deserialize(xmlReader);
      }
      catch (OracleException ex)
      {
        if (ex.Number == 6550) mensaje = "No tiene privilegios para
seleccionar esta Tabla";
        else mensaje = ex.Message; ;
        return (T)typeof(T).GetConstructor((new Type[] { })).Invoke(new
object[] { });
      }
      finally
      {
        cmd.Dispose();
      }
    }

_______________________________________________
Mono-hispano mailing list
[email protected]
https://listas.hispalinux.es/mailman/listinfo/mono-hispano