IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

[Entity] Comment exposer un webservice renvoyant un objet contenant une collection<objet>


Sujet :

Windows Presentation Foundation

  1. #1
    Membre régulier Avatar de igorzup
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 307
    Points : 107
    Points
    107
    Par défaut [Entity] Comment exposer un webservice renvoyant un objet contenant une collection<objet>
    Bonjour,

    Je n'ai pas trouvé de trace de cette réponse sur le forum, pourtant je suppose que cette question doit être récurrente.

    j'ai un WebService asmx qui d'apres un schéma edmx génère une liste d'objet entity liés les uns aux autres... normal quoi
    J'ai généré le schéma de données.

    Ma partie serveur a accès a tout mes objet et a leurs liens

    par contre ma partie client n'a pas accès aux objets sous jacents.

    Par exemple, un "utilisateur" n'a pas sa liste de rôles ni sa liste d'applications liées.

    Il semble que l'on ne puisse passer que des objet de type de base.
    erreur renvoyée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.Web.Services.Protocols.SoapException: Server was unable to  process request. ---> System.Data.MetadataException: Schema specified  is not valid. Errors: 
    The type doesn't have any key members. A RelationshipType or EntityType  must either have key members or a BaseType with key members.
    C'est pourtant quelque chose que j'ai deja vu... qui aurais de bons liens ou une bonne solution pour moi

    Par avance merci

    [Edit] : je precise:
    1 - que j'ai bien des clé definies dans le schéma pour chaque objet et que le modele physique contient bien une table de correspondance pour mes relations n-n avec mes paires de clé
    2 - que les clé (ou clef... ) sont bien définies en tant que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
    dans le code généré
    Rien ne sert de courir, il faut se donner la main.

  2. #2
    Membre régulier Avatar de igorzup
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 307
    Points : 107
    Points
    107
    Par défaut
    Je me répond au cas ou cela intéresse quelqu’un par la suite.

    Entity ne rime pas vraiment avec webservice.

    On est coincé par la sérialisation des objet au moment de leur relation.
    une relation n-n entre deux entité crée une redondance cyclique au moment de la sérialisation.

    On peux donc :
    - conserver la structure entity et serialiser par partie coté serveur en envoyant des objets de premier niveau et laisser au client le soin de reconstituer les niveaux inférieurs a la demande en modifiant le fichier (autogénéré) de reference.cs (mettre le LazyLoading a false dans ce cas)
    - repenser son shema relationel...
    - passer par des objets POCO

    mais je n'ai aucun doute que d'autres de ce forum auront, du coup, d'autre solutions...
    Rien ne sert de courir, il faut se donner la main.

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/07/2010, 08h42
  2. Réponses: 2
    Dernier message: 07/10/2008, 13h17
  3. Réponses: 2
    Dernier message: 29/05/2008, 15h59
  4. Afficher une collection d'objets dans une datagridview
    Par thorgal1612 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/04/2007, 17h38
  5. Serialisation d'objet contenant une collection
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 21/08/2006, 08h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo