consulta sobre LinqtoSQL

06/11/2008 - 19:37 por [Juanjo] | Informe spam
Hola grupo:

Supongamos la siguiente:
1. Tengo una clase que se encarga de realizar consulta sobre una base de
datos SQL Server, y tengo una consulta dinamica con LinqToSql en un funcion,
algo asi p.e.
(en ClassBD.cs)
public object[] getPersonas()
{
string sql="select clave,nombre from personas";
miLinqDataContext linq = new miLinqDataContext();
var datos = linq.ExecuteQuery<object>(sql);
return datos.ToArray<object>();
}
//Teniendo en cuenta que la tabla personas tiene mas campos, pero solo
me interesan por ejemplo esos 2

2. En un formalario quiero mostrar en un datagridview la lista de estas
personas
public void cargaPersonas()
{
ClassBD bd = new ClassBD()
this.datagridview1.DataSource=bd.getPersonas();
}

¿Por que no se muestra nada en el DataGrid si al hacer una traza si hay
elementos?

He leido en el google que si "Si la tabla no existe dentro del modelo,
.NET no encontrará forma de asociar la tabla a la entidad del modelo y no se
podrá acceder de forma directa.", pero hay alguna forma de hacer alguna
conversion??

Se me ha ocurrido crear un vista, pero claro no es cuestion de estar
creando vista para cada consulta.

Gracias
 

Leer las respuestas

#1 Octavio Hernandez
07/11/2008 - 14:15 | Informe spam
JJ,

El tipo (estático) de los elementos del array es object, y object no tiene
propiedades públicas... Por eso debe ser q no sale nada. Tendrías que mover
esos datos a un array o colección de otro tipo.

Al final, creo q hay q terminar definiendo un tipo

class Tmp
{
public int Clave { get; set; }
public string Nombre { get; set; }
}

y usarlo en las llamadas:

var datos = linq.ExecuteQuery<Tmp>(sql);
return datos.ToArray<Tmp>();

Entonces el enlace a datos te funcionará perfectamente.

Slds - Octavio



"[Juanjo]" wrote in message
news:%
Hola grupo:

Supongamos la siguiente:
1. Tengo una clase que se encarga de realizar consulta sobre una base
de datos SQL Server, y tengo una consulta dinamica con LinqToSql en un
funcion, algo asi p.e.
(en ClassBD.cs)
public object[] getPersonas()
{
string sql="select clave,nombre from personas";
miLinqDataContext linq = new miLinqDataContext();
var datos = linq.ExecuteQuery<object>(sql);
return datos.ToArray<object>();
}
//Teniendo en cuenta que la tabla personas tiene mas campos, pero solo
me interesan por ejemplo esos 2

2. En un formalario quiero mostrar en un datagridview la lista de estas
personas
public void cargaPersonas()
{
ClassBD bd = new ClassBD()
this.datagridview1.DataSource=bd.getPersonas();
}

¿Por que no se muestra nada en el DataGrid si al hacer una traza si hay
elementos?

He leido en el google que si "Si la tabla no existe dentro del modelo,
.NET no encontrará forma de asociar la tabla a la entidad del modelo y no
se podrá acceder de forma directa.", pero hay alguna forma de hacer alguna
conversion??

Se me ha ocurrido crear un vista, pero claro no es cuestion de estar
creando vista para cada consulta.

Gracias

Preguntas similares