none
automapper datatable a objeto RRS feed

  • Pregunta

  • hola foro :

    Tengo un store que me devuelve una dataset , como puede hacer con automapper para mapear la tabla del dataset a un objeto orden de compra que adentro tiene objetos hijos renglones orden de compra

    el codigo que estoy intentando es este:  Alguna sugerencia .?

    el metodo esta en un webervice y tiene esta firma :

      public OrdenPrestacionCompra ObtenerOrdenPrestacionDTO(int idOrden)
            {      

               ds = AccesoDatos.ObtenerOrdenCompra(idOrden);

                DataTable dt = ds.Tables[0];

             AutoMapper.Mapper.CreateMap<IDataReader, OrdenCompraDTO>()
                         .ForMember(dest => dest.CabeceraOrden, opt => opt.MapFrom(src => src.));

                    DataTableReader dtr = dt.CreateDataReader();
                 //   List<Person> people = new List<Person>();

                    OrdenCompraDTO= AutoMapper.Mapper.Map<OrdenCompraDTO>(dtr)

    gracias



    martes, 22 de marzo de 2016 3:30

Respuestas

  • hola

    el tema es que si al menos fuera un dataset tipado podrias mapear las propeidades de uno en otro

    aunque quizas puedes hacer

    AutoMapper With DataTables

    >>sino es codificarla de vuelta

    porque de vuelta? solo cambiarias el Fill() por el while para asignar los campos a las propiedades, eso no deberia llevarte a lo sumo mas un par de horas

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Inovador2015 martes, 22 de marzo de 2016 22:50
    martes, 22 de marzo de 2016 14:22

Todas las respuestas

  • hola

    >>Tengo un store que me devuelve una dataset

    porque devuelve un dataset ? si podrias usar el ExecuteReader() y cargar una entidad

    defines una clase como ser

    public class Item{
    	public string Prop1 {get;set;}
    	public string Prop2 {get;set;}
    	public string Prop3 {get;set;}
    }

    y luego ejecutas el procedure recorriendo sus registros para volcarlos a la lista

    List<Item> lista = new List<Item>();
    
    string connstring = "connection string";  
    using (SqlConnection cn = new SqlConnection(connstring)) {  
        cn.Open();  
     
        string sql = "SELECT campo1, campo2, campo3 FROM Tabla WHERE id =@id";  
        SqlCommand cmd = new SqlCommand(query, cn);  
        cmd.Parameters.AddwithValue("@id", Convert.Toint32(txtId.Text));  
     
        SqlDataReader reader = cmd.ExecuteReader();  
     
        while (reader.Read())  
        {  
    		Item obj = new Item();
            obj.Prop1 = Convert.ToString(reader["campo1"]);  
            obj.Prop2 = Convert.ToString(reader["campo2"]);  
            obj.Prop3 = Convert.ToString(reader["campo3"]);  
    		
    		lista.Add(obj);
        }  
     
    } 

    de esta forma no necesitas ninguna dataset y si quieres convertir con automapper puedes hacer de una clase a otra

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 22 de marzo de 2016 9:29
  • gracias leandro , es que es una capa de datos que  ya la tengo, heredada de alguien que lo hizo,me devuelve un dataset, no tengo alternativa , sino es codificarla de vuelta

    gracias

    martes, 22 de marzo de 2016 11:31
  • hola

    el tema es que si al menos fuera un dataset tipado podrias mapear las propeidades de uno en otro

    aunque quizas puedes hacer

    AutoMapper With DataTables

    >>sino es codificarla de vuelta

    porque de vuelta? solo cambiarias el Fill() por el while para asignar los campos a las propiedades, eso no deberia llevarte a lo sumo mas un par de horas

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Inovador2015 martes, 22 de marzo de 2016 22:50
    martes, 22 de marzo de 2016 14:22
  • gracias leandro como lo podria hacer con el ejemplo de arriba ?  como uso el fill?

    martes, 22 de marzo de 2016 15:22
  • >>como lo podria hacer con el ejemplo de arriba ?  como uso el fill?

    cual ejemplo haces referencia ? usar el fill ?


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 22 de marzo de 2016 19:15