Bonjour,
Je suis bloqué sur une erreur pour laquelle le débogueur ne m'est plus d'aucune aide...
Je travaille sous VS 2015 (Community) en C#, pour une application web (ASP .Net).
Je génère une base de données en code first. Notammen les tables Produit, Lot, et le lien entre les deux : LotProduit, qui permet à chaque Lot de disposer de plusieurs Produits, et à chaque Produit d'appartenir à plusieurs Lots, ainsi que de définir la quantité d'un même Produit dans chaque Lot.
Lot :
Produit :
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 using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace Akebia.Models { public class Lot { [Required, Display(Name = "LotID")] public int LotID { get; set; } public string libelle { get; set; } public double? prixSansEtui { get; set; } public double? prixEtuiSouple { get; set; } public double? prixEtuiRigide { get; set; } } }
LotProduit :
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 using System.ComponentModel.DataAnnotations; namespace Akebia.Models { public class Produit { [Key, Required, Display(Name = "ProduitId")] public long produitID { get; set; } [Required, Display(Name = "Code article")] public long CodeArticle { get; set; } [Required, StringLength(40), Display(Name = "Libellé")] public string Libelle { get; set; } [Required, StringLength(20), Display(Name = "Référence")] public string Reference { get; set; } [Display(Name = "Prix de revient")] public double? PrixRevient { get; set; } [Display(Name = "Prix de vente")] public double? PrixVente { get; set; } [Display(Name = "Quantité")] public int? Quantite { get; set; } public int? CategorieID { get; set; } public virtual Categorie Categorie { get; set; } } }
Je génère mes tables avec le code suivant :
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 using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; // Association des produits avec les lots namespace Akebia.Models { public class LotProduit { [Required] public int LotID { get; set; } [Required] [ForeignKey("LotID")] public virtual Lot lot { get; set; } [Required] public int produitId { get; set; } [Required] [ForeignKey("produitId")] public virtual Produit produit { get; set; } [Required] public int? quantite { get; set; } } }
Mon problème :
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 using System.Data.Entity; namespace Akebia.Models { public class ProduitContext : DbContext { public ProduitContext() : base("Akebia") { } public DbSet<Categorie> Categories { get; set; } public DbSet<Produit> Produit { get; set; } public DbSet<CartItem> ShoppingCartItems { get; set; } public DbSet<Lot> Lot { get; set; } public DbSet<Client> Client { get; set; } public DbSet<LotProduit> LotProduit { get; set; } } }
J'ai une erreur au lancement de l'application : la base de donnée ne se met pas à jour en créant les tables demandées. J'ai l'erreur suivante :
Je suppose que cela vient de ma définition de LotProduit, car jusqu'à présent je n'avais que les deux tables distinctes Lot et Produit qui fonctionnaient très bien et sur lesquelles je pouvait travailler.Envoyé par Visual Studio
Le fait d'avoir 2 FK ne devrait pas être un soucis, et jusqu'à présent le [Key] implicite fonctionnait, j'en espérait autant dans ce cas où je ne savais pas trop comment définir ces 2 FK comme une seule PK.
J'espère que vous pourrez m'aider. Merci d'avance pour vos réponses.
Partager