Bonsoir,
Pour chaque classe entity générée, je compte créer une classe partielle associée. par exemple Personne.cs et PersonneServices.cs
Dans la classe de services j'ai voulu créer un constructeur . Est-ce possible ?
Voici mes classes :
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 public partial class Personne { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] public Personne() { this.Voitures = new HashSet<Voiture>(); } public decimal id { get; set; } public string nom { get; set; } public string prenom { get; set; } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] public virtual ICollection<Voiture> Voitures { get; set; } }et mes classes de service :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public partial class Voiture { public decimal id { get; set; } public string marque { get; set; } public decimal idPersonne { get; set; } public virtual Personne Personne { get; set; } }
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public partial class Personne { public Personne(int id, string nom, string prenom):this() { this.id=id; this.nom = nom; this.prenom = prenom; } public override string ToString() { return this.id + " - " + this.nom + " - " + this.prenom; } }
Voici le programme :
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 partial class Voiture { public Voiture(int id, string marque, int idPersonne) { this.id = id; this.marque = marque; this.idPersonne = idPersonne; } public override string ToString() { return "Voiture : " + this.id + " - " + this.marque; } }
Le programme se compile bien. mais à l'exécution j'ai ceci sur l'instruction foreach (var v in unePersonne.Voitures)
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 static void Main() { using (EntitiesHeritage contexteHeritage = new EntitiesHeritage()) { var req = from pers in contexteHeritage.Personnes select pers; var p= req.ToList(); foreach(var unePersonne in p) { Console.WriteLine(unePersonne); foreach (var v in unePersonne.Voitures) { Console.WriteLine("\t" + v); } } } Console.ReadKey(); }
"Une exception non gérée du type 'System.Reflection.TargetInvocationException' s'est produite dans EntityFramework.dll"
Si je ne surcharge pas le constructeur, le programme s'exécute bien.
Merci pour les explications et les solutions.
Cordialement
Partager