6 Stimmen

Unfähig, benutzerdefinierte Klasse von einem WCF-Datendienst zurückzugeben

Ich versuche, eine benutzerdefinierte Klasse von meinem WCF-Datendienst zurückzugeben. Meine benutzerdefinierte Klasse lautet:

[DataServiceKey("ID")]
public class Applist {
    public int ID { get; set; }
    public string Name { get; set; }
}

Mein Datendienst sieht so aus:

public static void InitializeService(IDataServiceConfiguration config)
{
    config.RegisterKnownType(typeof(Applist));
    config.SetEntitySetAccessRule("*", EntitySetRights.All);
    config.SetServiceOperationAccessRule("GetApplications", ServiceOperationRights.AllRead);
}

[WebGet]
public IQueryable GetApplications() {
    var result = (from p in this.CurrentDataSource.Applications
          orderby p.ApplicationName
          group p by p.ApplicationName into g
          select new Applist { ID = g.Min(p => p.id), Name = g.Key });

    return result.AsQueryable();
}

Allerdings erhalte ich beim Ausführen des Dienstes einen Fehler:

Anforderungsfehler Anforderungsfehler Der Server hat einen Fehler bei der Verarbeitung der Anforderung festgestellt. 
Die Ausnahmemeldung lautet: 'Metadaten für den Rückgabetyp 'System.Linq.IQueryable`1[ApplicationService.Applist]' der Methode
'System.Linq.IQueryable`1[ApplicationService.Applist] GetApplications()' können nicht geladen werden.'

Die gleiche Abfrage funktioniert einwandfrei in LINQPad.

2voto

Dhawal Punkte 1230

Beziehen Sie sich auf den untenstehenden Blog. Er erklärt dieses Szenario und eine mögliche Lösung im Detail: http://samuelmueller.com/2009/11/working-with-projections-and-dtos-in-wcf-data-services/

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X