Enregistrement données en base avec Entity Framework

cs_niko14 209 Messages postés jeudi 12 janvier 2006Date d'inscription 10 octobre 2014 Dernière intervention - 10 oct. 2014 à 11:59 - Dernière réponse :  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();
}

}
Afficher la suite 

3 réponses

Répondre au sujet
tpoinsot 345 Messages postés mardi 1 juin 2004Date d'inscription 17 octobre 2014 Dernière intervention - 17 oct. 2014 à 12:09
0
Utile
1
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.
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
Commenter la réponse de tpoinsot
0
Utile
j'ai eu le meme probleme etj'ai pas pu à le corriger pouvez vous m'aider?
Commenter la réponse de fatma

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.