Bonjour à tous,
Cela pas mal de temps que je bloque sur un problème et malgré mes recherches, je n'arrive pas à le résoudre.
J'ai une architecture ci-après :
une DAL
une BLL
une Couche de WCF,
puis un client léger (Application ASP) qui consommera les services.
J'ai une classe "Personne" (générée depuis l'edm) ainsi définie :
avec trois propriétés (IdPersonne, nom et prénom)
et une ICollection<Vetement>
La classe "Vetement" a deux propriétés :
IdPersonne et couleur.
au niveau de la persistance, j'ai en base :
Table Personne :
IdPersonne : 1
Nom : Jules
Prenom : César
Table Vetement :
IdPersonne : 1 avec Couleur = bleu,
IdPersonne : 2 avec couleur = rouge.
Mes classes sont bien décorées avec les annotations [DataContract] et [DataMember].
Mon service a bien les décorations [ServiceContract] et [OperationContract]
Dans la DAL, j'ai mis context.Configuration.LazyLoadingEnabled à "false", ainsi que context.Configuration.ProxyCreationEnabled à "false". (J'ai lu pas mal d'articles mentionnant que leur état à "true" ne permet pas le bon fonctionnement du service.
J'ai un service Wcf qui retourne une personne (la requete est faite au niveau de la DAL)
Au niveau de l'application Web ASP, je crée une instance du service, que je nomme proxy.
Mon problème :
J'ai deux cas de figure :
1) Je définis la requête ainsi :>>>> le wcf récupère bien mon objet Personne (Jules Cesar) puis mon proxy récupère bien l'objet MAIS avec une liste VIDE d'objets Vetement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part var query = from p in context.Personnes where p.IdPersonne == 1 select p
2) Je définis la requête ainsi :>>>> Dans ce cas, dans ma couche Wcf, l'objet est encore bien construit. (avec sa collection de vêtement). Mais, au niveau client, cela crée un problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part var query = from p in context.Personnes.Include("Vetement") where p.IdPersonne == 1 select p
J'ai fouiné de partout, sans succès.Une erreur s'est produite lors de la réception HTTP...La raison peut en être que la liaison du point de terminaison de service n'utilise pas le protocole HTTP. Cela peut egalement être dû au fait qu'un contexte de demande http a été ignoré par le serveur....
J'ai regardé ici aussi : http://www.developpez.net/forums/d96...ity-generator/
J'ai le sentiment que c'est le même problème. Mais, étant novice, je n'ai pas réussi à tout comprendre.
Pourriez-vous, svp, m'aider à cerner le problème ?
Merci bien
Partager