Enregistrement données en base avec Entity Framework

cs_niko14 Messages postés 209 Date d'inscription jeudi 12 janvier 2006 Statut Membre Dernière intervention 10 octobre 2014 - 10 oct. 2014 à 11:59
 thierrysoft - 14 déc. 2017 à 15:35
Bonjour,

j'ai créé un site asp.net avec Entity Framework, Linq et tout le bazar.
J'ai un objet PRODUIT qui est lié à une table PRODUIT_A_POUR_TAILLE, qui va référencer toutes les tailles pour un produit.
Lorsque je veux créer mon produit, il me créé une exception me disant :

System.Data.Entity.Core.UpdateException: Une erreur s'est produite lors de la mise à jour des entrées. Pour plus d'informations, consultez l'exception interne. ---> System.InvalidOperationException: Une propriété dépendante dans ReferentialConstraint est mappée à une colonne générée par le magasin. Colonne : 'ID_PRODUIT'


Je ne vois pas trop d'où ça peut venir.
Est ce qu'il veut me dire que je ne peux pas enregistrer de produit car il faut un id produit pour le mettre dans la table des tailles?

Je vous mets mon code d'ajout ci-dessous, et merci d'avance







protected void btnValider_Click(object sender, EventArgs e)
{
string imgPr = string.Empty;
string img2 = string.Empty;
string img3 = string.Empty;
string img4 = string.Empty;

try
{

int idProduit = 0;
PRODUITS newProduit = new PRODUITS();
newProduit.TITRE = this.tbxTitre.Text;
newProduit.DESCRIPTION = this.tbxDescription.Text;
newProduit.PRIX = this.tbxPrix.Text.Replace('.', ',');
newProduit.ID_TYPE_PRODUIT = int.Parse(this.ddlTypeProduit.SelectedValue);
if (!string.IsNullOrEmpty(this.tbxDimensions.Text))
newProduit.DIMENSIONS = this.tbxDimensions.Text;
if (!string.IsNullOrEmpty(this.tbxInstructions.Text))
newProduit.INSTRUCTIONS = this.tbxInstructions.Text;
newProduit.LIEN_MARKET = this.tbxLittleMarket.Text;

//Noms des images
newProduit.IMG_PRINCIPALE = imgPr = string.Concat(DateTime.Now.ToString("yyyyMMddHHmmssffff"), ".jpg");
if (fiuImg2.HasFile)
newProduit.IMG2 = img2 = string.Concat(DateTime.Now.ToString("yyyyMMddHHmmssffff"), "_2.jpg");
if (fiuImg3.HasFile)
newProduit.IMG3 = img3 = string.Concat(DateTime.Now.ToString("yyyyMMddHHmmssffff"), "_3.jpg");
if (fiuImg4.HasFile)
newProduit.IMG4 = img4 = string.Concat(DateTime.Now.ToString("yyyyMMddHHmmssffff"), "_4.jpg");

int[] taillesSelected = this.lbTailles.GetSelectedIndices();
foreach (int item in taillesSelected)
{
PRODUIT_A_POUR_TAILLE pTaille = new PRODUIT_A_POUR_TAILLE();
pTaille.ID_PRODUIT = newProduit.ID_PRODUIT;
pTaille.ID_TAILLE = item;

newProduit.PRODUIT_A_POUR_TAILLE.Add(pTaille);
//using (Entities2 db = new Entities2())
//{
// db.PRODUIT_A_POUR_TAILLE.Add(pTaille);
// db.SaveChanges();
//}
}


using (Entities2 db = new Entities2())
{
db.PRODUITS.Add(newProduit);


db.SaveChanges();
}
idProduit = newProduit.ID_PRODUIT;

//int[] taillesSelected = this.lbTailles.GetSelectedIndices();

//Enregistrement des tailles du produit
//if (idProduit != 0)
// foreach (int item in taillesSelected)
// {
// PRODUIT_A_POUR_TAILLE pTaille = new PRODUIT_A_POUR_TAILLE();
// pTaille.ID_PRODUIT = idProduit;
// pTaille.ID_TAILLE = item;
// using (Entities2 db = new Entities2())
// {
// db.PRODUIT_A_POUR_TAILLE.Add(pTaille);
// db.SaveChanges();
// }
// }

//Enregistrement des images sur le serveur
SaveFile(1, imgPr);
if (fiuImg2.HasFile)
SaveFile(2, img2);
if (fiuImg3.HasFile)
SaveFile(3, img3);
if (fiuImg4.HasFile)
SaveFile(4, img4);
//bitmap.Save(HttpContext.Current.Server.MapPath("/img/bitmap.png"));


}
catch (DbEntityValidationException exc)
{
foreach (var eve in exc.EntityValidationErrors)
{
lblError.Text += "Entity of type "" + eve.Entry.Entity.GetType().Name + "" in state "" + eve.Entry.State + "" has the following validation errors:";
foreach (var ve in eve.ValidationErrors)
{
lblError.Text += "- Property: "" + ve.PropertyName + "", Error: "" + ve.ErrorMessage + """;
}
}
}
catch (Exception ex)
{
this.lblError.Text = ex.InnerException.ToString();
}

}

2 réponses

tpoinsot Messages postés 345 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 octobre 2014 4
17 oct. 2014 à 12:09
Bonjour,
Je ne pense pas que l'erreur vienne du code. Vérifie les extrémités de la relation, par exemple qu'il n'y ait pas d'auto-incrément des 2 côtés.
0
moi j'avais eu problème lorsque j'ai changé la clé primaire d'une table.Ouvre ton edmx,choisis la table concernée,regarde le mapping dans la grille du bas,choisis la colonne concernée et va dans les proprités t'assurée qu'elle n'est pas à identity pour le cas d'une clé étrangère...tu pourra de la meme facon vérifier toutes tes autres colonnes et t'assurer qu'elles sont correctes
0
j'ai eu le meme probleme etj'ai pas pu à le corriger pouvez vous m'aider?
0
Rejoignez-nous