SilverLight 2 + DataServicesQuery [.Net 3.5 SP1]

Iniciado por MANULOMM, 18 Agosto 2008, 08:25 AM

0 Miembros y 1 Visitante están viendo este tema.

MANULOMM

Hola, estoy haciendo un pequeño proyecto, consiste en consumir un DataService (.svc) desde silverlight 2, he logrado acceder pero cuando ejecuto el siguiente metodo:


        private void Consultar(IAsyncResult Res)
        {
            DataServiceQuery<Contacto> Cont = (DataServiceQuery<Contacto>)Res.AsyncState;
            dgvDatos.ItemsSource = Cont.EndExecute(Res).ToList();
        }


arroja un error en la ultima linea, el error es este:
Citar
No hay constructor sin parámetros definido para este objeto.

me parce que si logra traer los datos, pues ejecuto solo el EndExecute(Res) y todo funciona bien, el lio esta al llamar al ToList(), la pila arrojada por el error es la siguiente:


en System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)

en System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)\r\n   en System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)

en System.RuntimeType.CreateInstanceImpl(Boolean publicOnly)

en System.Activator.CreateInstance(Type type, Boolean nonPublic)

en System.Activator.CreateInstance(Type type)

en System.Data.Services.Client.ClientType.CreateInstance()

en System.Data.Services.Client.MaterializeAtom.ResolveOrCreateInstance(ClientType type, Uri identity, Uri editLink, String etag, Object& currentValue)

en System.Data.Services.Client.MaterializeAtom.ReadNext(ClientType currentType, Type expectedType, AtomParseState atom, Object& currentValue)

en System.Data.Services.Client.MaterializeAtom.MoveNext()

en System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)

en System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)

en Contactos.Page.Consultar(IAsyncResult Res)

en System.Data.Services.Client.BaseAsyncResult.HandleCompleted()

en System.Data.Services.Client.QueryAsyncResult.AsyncEndRead(IAsyncResult asyncResult)\r\n   en System.IO.Stream.BeginRead(Byte[] buffer, Int32 offset, Int32 count, AsyncCallback callback, Object state)

en System.Data.Services.Client.QueryAsyncResult.AsyncEndGetResponse(IAsyncResult asyncResult)"


Gracias por la colaboracion,
Atentamente,

Juan Manuel Lombana
Medellín - Colombia


sangano

Hola, EndExecute() no te retorna una coleccion por si sola?, por que la estarias convirtiendo en una lista, ItemSource deberia darle lo mismo el tipo de coleccion que se le pasa.

MANULOMM

#2
EndExecute Retorna IEnumerable<T> -> T es el tipo del DataServiceQuery<T> ItemsSource Recibe un IEnumerable<T> , List<T> implementa IEnumerable<T>, esto deberia funcionar, He buscado bastante pero todo el mundo lo hace de esta manera...


Atentamente,

Juan Manuel Lombana
Medellín - Colombia.