Salut,
comment je peux ajouter une propriété de navigation ( public virtual ICollection<Enrollment> Enrollments { get; set; } ) à une classe généré par Entity Framework, j'ai essayé en l'ajoutant dans myModel.Designer.cs mais ça n'a pas marché![]()
Merci







			
			
			
			 
			
				
Salut,
comment je peux ajouter une propriété de navigation ( public virtual ICollection<Enrollment> Enrollments { get; set; } ) à une classe généré par Entity Framework, j'ai essayé en l'ajoutant dans myModel.Designer.cs mais ça n'a pas marché![]()
Merci
Il faut utiliser soit le mode graphique (fichier .edmx) de ton modèle si la propriété de navigation est une classe (ici Enrollments ) persistante (présente dans l'edmx), soit créer une classe partiel de la classe parente ayant une propriété public virtual ICollection<Enrollment> Enrollments { get; set; } Par contre il faudra définir comment cette propriété est chargée.







			
			
			
			 
			
				
Merci pour ta réponse,
j'ai essayé de le charger dans la vue Details.cshtml:
mais j'obtiens une erreur au niveau de la Ligne38:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51@model ContosoUniversity.Models.Etudiant @{ ViewBag.Title = "Details"; } <h2>Details</h2> <fieldset> <legend>Etudiant</legend> <div class="display-label">Nom</div> <div class="display-field"> @Html.DisplayFor(model => model.Nom) </div> <div class="display-label">Prenom</div> <div class="display-field"> @Html.DisplayFor(model => model.Prenom) </div> <div class="display-label">DateInscription</div> <div class="display-field"> @Html.DisplayFor(model => model.DateInscription) </div> <div class="display-label"> @Html.LabelFor(model => model.Inscriptions) </div> <div class="display-field"> <table> <tr> <th>Grade</th> </tr> @foreach (var item in Model.Inscriptions) { <tr> <td> @Html.DisplayFor(modelItem => item.Grade) </td> </tr> } </table> </div> </fieldset> <p> @Html.ActionLink("Edit", "Edit", new { id=Model.IDetudiant }) | @Html.ActionLink("Back to List", "Index") </p>
System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
Ligne 36 : <th>Grade</th>
Ligne 37 : </tr>
Ligne 38 : @foreach (var item in Model.Inscriptions)
Ligne 39 : {
Ligne 40 : <tr>
C'est dans le contrôleur qu'il faut charger Model.Inscriptions. Dans la vue tu l'affiche en y accédant. Donc là on voit bien que cette propriété n'est pas chargé elle est à null.
La propriété Inscriptions vient d'où ? De la base de données ? Si c'est la cas il faut modifier le modèle dans l'edmx. Si cela vient d'autre part, fichier, calcule, webservice... il faut instancier cette propriété en utilisant sa source.







			
			
			
			 
			
				
Bonjour,
vient d'une classe partial:La propriété Inscriptions vient d'où ?
les classes partial sont dans Models et les autres en base de donnée..
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
 1
2
3
4
5
6
7 ... namespace ContosoUniversity.Models { public partial class Etudiant { public virtual ICollection<Inscription> Inscriptions { get; set; } }
j'ai essayé de le charger en ajoutant Inscriptions = new List<Inscription> ();C'est dans le contrôleur qu'il faut charger Model.Inscriptions.
mais ça m'a affiché 3 erreurs..
Si la list Inscription est vide au départ, Inscriptions = new List<Inscription> (); devrait permettre que cela fonctionne.
L'erreur est toujours :
System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.







			
			
			
			 
			
				
oui,L'erreur est toujours :
System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
oui elle est vide mais il y'a 3 erreurs qui s'affichent au niveau de Inscriptions = new List<Inscription> ();Si la list Inscription est vide au départ, Inscriptions = new List<Inscription> (); devrait permettre que cela fonctionne.Controlleur:*) Jeton '=' non valide dans la déclaration de membres de la classe, de la structure ou de l'interface
*) Le type ou le nom d'espace de noms 'Incscriptions' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?)
*) Le modificateur de membre 'public' doit précéder le type et le nom du membre
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
 1
2
3
4
5
6
7
8 ... namespace ContosoUniversity.Controllers { public class EtudiantController : Controller { private SupemirUniversityDBEntities db = new SupemirUniversityDBEntities(); Inscriptions = new List<Inscription> (); ...
Inscriptions ne semble pas déclaré !
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
 1
2
3
4
5
6
7 namespace ContosoUniversity.Controllers { public class EtudiantController : Controller { private SupemirUniversityDBEntities db = new SupemirUniversityDBEntities(); Inscriptions = new List<Inscription> ();
De toutes les façons Inscriptions ne doit pas être un propriété du contrôleur mais de l'instance de Etudiant utilisé pour modèle. Et Etudiant .Inscriptions doit être initialisé dans les action du contrôleur.
Partager