CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C#] Interrogation sur entity framework

trymort
trymort
Niveau 9
17 novembre 2014 à 16:21:05

Bonjour je vous soumet une question auquel je n'ai pas trouvé de réponse explicite:

J'ai cree une base de donnee sur ce modele:
TABLE A : id, tag, description
TABLE B: id,tag, description, id_a
TABLE C: id, tag, description, id_c

Ainsi chaque element d'une table est liée (avec un id) par clé etrangere du bas en haut.

En gros les elements de C sont liés a un ou des elements de B qui est lié à A de la meme maniere.

J'ai ensuite creer un objet de base de donnée par le biais d'Entity Framework qui m'a ajouté la cle, crée mes modeles par rapport a la base de donnée et crée le contexte d'accées à la base.

Du coup je me retrouve bien avec 3 nouvelles classes A, B , C qui ont les bonnes propriétés id, tag, description... Et une propriété "Icollection<B>" dans A, et "Icollection<C>" dans B

Je n'ai pas cette colonne dans la base de donnée, j'en deduis que EF m'a crée automatiquement ces propriétés.

Dois-je en deduire que je peux accéder sans jointure aux elements liés ? Parceque j'ai bien une propriété du nom de la table liée mais je ne comprends pas comment l'exploiter.

Donc en gros je voudrais savoir ce qui s'est produit et ce que cela implique.

Merci :)

deepblue
deepblue
Niveau 16
17 novembre 2014 à 19:14:03

Si tu inverses le raisonnement (pas tout à fait juste si on joue sur les mots) de "En gros les elements de C sont liés a un ou des elements de B qui est lié à A de la meme maniere.", alors A contient une collection de B et B contient une collection C. C'est pourquoi tu as ces 2 propriétés dans tes modèles A et B.

Concernant ta question sur la jointure, ça dépend uniquement de ton entity manager. Il la fera peut être automatique ou pas. J'ai envie de te dire : essayes et tu verras :ok:

trymort
trymort
Niveau 9
17 novembre 2014 à 19:47:36

J'ai compris cependant que faire de ces collections ?

Dans l'idée je ne connais que A et je veux obtenir tous les elements de B liés dans A, puis dans C obtenir tous les elements de B.

En gros je voudrais récuperer un objet en forme d'arbre partant de A et descendant en C.
Le souci c'est que je ne vois pas comment Foreach dans la requete donc je ne peux construire un objet anonyme qui comprend l'ensemble des elements A<B<C imbriqués :/

trymort
trymort
Niveau 9
18 novembre 2014 à 17:56:12

Je remonte histoire de me rendre plus clair.

Voici ma requete :

var requete = from a in bdd.TABLE_A select a;

Ce que je veux c'est egalement recuperer toutes les entrées liées à la table a et en effet je peux y acceder en regardant dans la variable requete.TABLE_B qui est une variable Icollection. Cependant je souhaite aussi recuperer les elements de la TABLE_C liée à TABLE_B.

D'ou l'idee d'un arbre sous forme d'objet anonyme. Je peux surement faire autrement mais pas d"idée. Le but est de serialiser l'objet au format JSON dans un service RESTful

deepblue
deepblue
Niveau 16
18 novembre 2014 à 22:42:46

Je n'ai pas de quoi tester mais de mémoire, la double jointure va poser des probèmes. En tout cas ça devrait être le cas chez MySQL (selection de A + jointure de B par rapport à A, jointure de C par rapport à B : C va rameuter des résulats sur des B qui ne sont pas liés à A).

Naïvement, voilà ce que je ferais :
- récupérer les données A et faire la jointure de B : tu auras donc des modèles de A et la collection de B qui va avec
- à la création d'un B, tu vas chercher les C et tu alimentes l'attribut de collection C

Tu devrais avoir toutes les données que tu veux.

Techniquement, je ne sais pas comment fonctionne C# et je ne peux pas t'en dire plus.

trymort
trymort
Niveau 9
20 novembre 2014 à 03:11:19

moui bon j'ai laissé tomber mais merci quand meme !

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment