Linq para mapear Datasets a Entidades?... alternativas ágiles?

15/07/2008 - 23:10 por Ariel Larraburu | Informe spam
Buenas!. La pregunta es, suponiendo que tengo en una aplicacion en capas, en
la capa de acceso a datos, metodos que actualmente obtienen datasets de
procedimientos almacenados y convierten estos datarows a entidades de tipo
List<Tipo>, es decir, convierto:

Select Nombre, Apellido From Clientes

a:

public class Clientes:List<Cliente> {}

donde 'cliente' es:

public class Cliente
{
public string Nombre { get {...} set {...}}
public string Apellido { get {...} set {..}}
}

Estoy buscando el metodo mas eficiente y que me insuma el menor trabajo y la
menor cantidad de lineas de codigo posible, estoy intentando lograr esto con
linq to dataset, no lo logre aun, pero estimo que por ese lado está la
solucion. Todo esto suponiendo que los campos de la tabla y las propiedades
de la clase ya son de tipos compatibles y sus nombres son los mismos...

El siguiente código no funciona pero da una buena idea de lo que quiero
hacer. No estoy buscando que me resuelvan el problema, pero tampoco quiciera
reinventar la rueda:

//esta es una clase del tipo List<Product>
ENTeCommerce.Products entProducts = new
ENTeCommerce.Products();

var products = from p in ds.Tables[0].AsEnumerable() select p;
entProducts = products.ToList<ENTeCommerce.Products>();

Resultado: (error en la ultima linea) cannot convert from
'System.Data.EnumerableRowCollection<System.DataRow>' to
'System.Collections.Generic.IEnumerable.

Actualmente tengo una clase que usa reflection, algo asi como public static
MapEntity(DataSet dsSource, ref object entity), pero usar reflection no solo
no es, digamos muy prolijo, sino que genera un pequeño cuello de botella.

Se aceptan todo tipo de sugerencias.

Saludos.

Ariel Larraburu.
 

Leer las respuestas

#1 Alfredo Novoa
16/07/2008 - 12:12 | Informe spam
Hola Ariel,

On 15 jul, 23:10, "Ariel Larraburu"
wrote:
Buenas!. La pregunta es, suponiendo que tengo en una aplicacion en capas, en
la capa de acceso a datos, metodos que actualmente obtienen datasets de
procedimientos almacenados y convierten estos datarows a entidades de tipo
List<Tipo>, es decir, convierto:

Select Nombre, Apellido From Clientes

a:

public class Clientes:List<Cliente> {}

donde 'cliente' es:

public class Cliente
{
public string Nombre { get {...} set {...}}
public string Apellido { get {...} set {..}}

}

Estoy buscando el metodo mas eficiente y que me insuma el menor trabajo y la
menor cantidad de lineas de codigo posible, estoy intentando lograr esto con
linq to dataset, no lo logre aun, pero estimo que por ese lado está la
solucion. Todo esto suponiendo que los campos de la tabla y las propiedades
de la clase ya son de tipos compatibles y sus nombres son los mismos...




Con LinQ to SQL puedes eliminar todo el código de los datasets y de
las clases como Cliente por
que ya te devuelve directamente una lista con tipo a partir de una
consulta.


Saludos
Alfredo

Preguntas similares