Bonsoir à tous,
Je m'exerce sur une petite appli web (gestion de bibliothèque)
et je n' arrive pas à récupérer une liste présente dans la classe "Auteur"
je m'explique,
Voici les 2 classes concernées:
je remplis un jeu de test avec cette méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class Auteur { public int Id { get; set; } [Required] public string Nom { get; set; } public List Livres { get; set; } } public class Livre { public int Id { get; set; } public string Titre { get; set; } public DateTime DateParution { get; set; } }
et enfin je récupère mes données comme ceci :
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 public int CreerAuteur(string nom) { Auteur a = new Auteur() { Nom = nom }; bdd.Auteurs.Add(a); bdd.SaveChanges(); return a.Id; } public int CreerLivre(string titre, DateTime dateParution, Auteur a) { Livre l = new Livre() { Titre = titre, DateParution = dateParution}; if (a.Livres == null) { a.Livres = new List<Livre>(); } a.Livres.Add(l); bdd.SaveChanges(); return l.Id; } private void RemplirTableLivres() { for (int i = 0; i < 10; i++) { int idAuteur = CreerAuteur("dudul" + i ); int idLivre = CreerLivre("titre" + i, bdd.Auteurs.First(a => a.Id == idAuteur) ); } }
Quand je lance l'application en mode débogueur, tout fonctionne bien la première fois car il crée les données et les persiste, donc il reste le bon jeu en local.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public Dictionary<Auteur, Livre> ObtientTousLesLivresAvecAuteur() { Dictionary<Auteur, Livre> dic = new Dictionary<Auteur, Livre>(); foreach (Auteur a in ObtientTousLesAuteurs()) { foreach (Livre l in a.Livres.ToList()) { dic.Add(a, l); } } return dic;
doncfonctionne bien.a.Livres.ToList()
mais quand je relance l'application pour la 2é fois, je me retrouve avec unnull pour chaque objet Auteur contenu dans la liste renvoyée para.Livres.ToList()alors que chaque auteur a écrit au moins un livre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ObtientTousLesAuteurs()
J'ai vérifié coté SQL Server, l'id de l'auteur a bien été enregistré dans la table livre dans tous les enregistrements ...
C'est la première fois que je rencontre ce problème, quelqu'un aurait une idée de la cause svp?
Merci d'avance
Partager