locked
Silverlight, Entity Framework et relations n-n ? RRS feed

  • Question

  • Bonjour à tous.

    Recemment j'ai déjà ouvert un topic sur le fonctionnement de Silverlight, EF, et LINQ to entities sur un autre forum d'entraide celebre.

    Pour ceux que celà interresse voici le lien : http://www.developpez.net/forums/d92...-mode-demploi/

    Maintenant j'ai un autre problème, et de taille !
    Voici toute l'explication step by step.

    Tout d'abord je créé mon Entity Data Model.
    Il est très simple, j'ai une entité employee, qui possède plusieurs attributs dont une collection de permissions.
    De la même manière, mon entité permission peut posseder une collection d'employee.
    Jusque là c'est donc une relation n-n ce qu'il y a de plus classique, à la différence qu'EF s'occupe comme un grand de la création de la table intermédiaire EmployeePermission à notre place et en arrière plan.

    Une fois mon modèle conceptuel terminé je clique droit sur mon designer et fais "generate database from model".

    J'execute le script SQL de DDL que EF me genere.

    Si je vais dans mon SQL serveur 2008 et que je genere un diagramme de ma DB fraichement crée, le résultat est identique à ce à quoi je m'attendait, c'est à dire 3 tables.
    Jusque là pas de problème.

    N'oublions pas que nous sommes en Silverlight, et que si coté client je veux pouvoir exploiter les classes que EF m'a gentiment crée je dois les exposer depuis le serveur au travers de quelque chose, et ce quelque chose dans mon cas est une classe "Domain Service", que j'appelle DomainService1.

    Maintenant c'est là que mes problèmes commencent.
    Coté client j'ai crée une classe censé scanner l'ensembles des permissions que possede mon employee, sur base de son Id.

    Je n'oublie pas mon using vers le serveur.
    J'instancie ma classe DomainService1, et j'appelle cette instance _context.
    Comme je sais que par défault Silverlight ne charge pas toute ma DB en mémoire (et heureusement), je sais que je dois charger manuellement dans mon context les d'entity sets dont j'ai besoin, c'est à dire Employee et Permission, à l'aide de la methode load.

    Ensuite j'écris ma petite requete LINQ to entities qui va bien, et qui est censée me récuperer un seul et unique employee, sur base de son Id.

    Et là, ô malheur, ô desespoir, à moins que l'intellisense de VS ne me joue des tours je n'ai pas accés à la collection de permissions tant esperée de mon employee !!!

    Alors là je me dit ou ai'je manqué une étape ? Ou est l'astuce ? Comment faire pour charger les relations entre mon employee et les permissions qui lui sont liées (en DB) ???

    Messieurs si vous avez la réponse c'est avec plaisir, sur ce coup là je donne ma langue au chat, pourtant c'est pas faute d'avoir cherché !

    Merci d'avance.

    samedi 29 mai 2010 19:48

Réponses

  • Quand tu écris ta requete LINQ, peux tu essayer d'ajouter la methode include()? genre:

    _context.employee.Where("it.EmployeeID = @empId",new ObjectParameter("empId", Id)).Include("Permissions").First();

    La méthode include prend en paramètre le nom de la propriété de la classe employee à charger.


    mardi 1 juin 2010 08:46

Toutes les réponses