2010-08-29 11 views
4

J'ai une classe d'événement qui est généré à partir cadre Enitity, je l'ai étendu ce qu'il produit dans une partie comme ceci:Propriété personnalisée en classe partielle n'existe pas après il est envoyé au client en utilisant WCF Data Services

public partial class Event 
{ 
    [DataMemberAttribute()] 
    public EventDate CurrentEventDate { get; set; } 
} 

lorsque j'utilise la propriété personnalisée sur le serveur, il est très bien, par exemple:

[WebGet] 
    public IQueryable<Event> EventsOn(string date) 
    { 

     var to Return = // Get my events here 
     toReturn.ToList().ForEach(ev => ev.CurrentEventDate = ev.EventDates.Where(
           evd => evd.StartDateTime.Date <= qDate.Date && evd.EndDateTime >= qDate.Date).Single()); 

     return toReturn.AsQueryable(); 

    } 

Mais quand je tente regarde cet objet en Javascript, il me dit que:

erreur: « actuelle EventDate 'est null ou un objet

Comment puis-je afficher les propriétés personnalisées après qu'elles ont été envoyées sur le réseau?

Répondre

1

Assurez-vous que les deux définitions de classe partial se trouvent dans le même espace de noms. Sinon, le compilateur les transformera en deux classes distinctes et ne vous avertira pas.

+0

Yup J'ai déjà expliqué explicitement les espaces de noms, merci pour le contrôle bien. – Tarks

0

Juste un long shot - EventDate semble être une heure personnalisée. Si oui, l'avez-vous décoré avec les attributs Serializable et DataContract (et ses propriétés avec l'attribut DataMember)?

+0

Merci pour l'idée, mais EventDate est une classe générée à partir de l'Entity Framework donc il a déjà tous les attributs. – Tarks

+0

Une suggestion - vous pouvez utiliser Firefox ou Fiddler et vérifier la réponse du service - qui vous indiquera au moins si le problème réside - la sérialisation côté serveur ou la désérialisation côté client. – VinayC