Bonjour,
Impossible d'arriver à trouver un titre explicite pour ce que je vous vous montrer, sois je suis pa ssé à coté de l'entity framework depuis les quelques jours que je l'utilise, sois c'est vraiment puissant ( sans être trés optimisé derrière).
J'ai une base généré avec EF sous visual 2010, avec des Etudiants (Student) qui ont une relation 1-N avec des formations (Semester). ( Un etudiant à une seule formation en cours, une formation comporte N etudiant).
Je veut dans mon code récupérer tout les étudiants qui appartiennent à une formation donnée.
J'ai d'abord commencé par écrire :
C'est pas faux de l'écrire je suppose. Mais alors :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public List<Student> getStudentBySemester(Semester sem) { List<Student> students; using (DataBaseContainer dc = new DataBaseContainer()) { dc.AttachTo("SemesterSet", sem); var result = from p in dc.GlobalEntitySet.OfType<Student>() where p.Semester.Id == sem.Id orderby p.Username ascending select p; students = result.ToList<Student>(); } return students; }
Je rêve complétement ou ça fait la même chose ? Niveau optimisation, qu'est ce qui est le mieux si je ne rêve pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public List<Student> simpleGetStudentBySemester(Semester sem) { sem.Student.Load(); return sem.Student.ToList<Student>(); }
En fait mon appli n'est pas assez avancé pour que je puisse le tester facilement et j'arrive pas à savoir ce qu'il en est en cherchant sur les divers aides sur internet.
Mais alors dans ce cas, le langage de requête que j'utilisais alors jusque là n'est t'il pas complétement obsoléte en EF ?
Peut t'on réduire sur le même principe :
Soit " J'ai des evenement liés à des entités, relation N-N, un evement à plusieurs entités concernée, une entité est liés à plusieurs événement", je veut pouvoir récupérer pour une entité donnée, l'ensemble des évenement en base.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public void getEventsByEntity(GlobalEntity ge, DateTime begin, DateTime end) { using (DataBaseContainer dc = new DataBaseContainer()) { var eventsList = from ev in dc.EventSet from eg in ev.GlobalEntity where eg.Id == ge.Id && ev.StartTime >= begin && ev.EndTime <= end select ev; } }
Partager