Meilleur auteur de réponses
Probleme ForeignKeyConstraint En Ado.net Mode Deconnecter

Question
-
Bonjour,
tt simplement , je travaille dans une application Ado.net lie avec une base de données SQLSERVER , le Probleme j ai ajouter des Foreign key en base de données , j ai deux tables , la première c'est la table Entite et la deuxième c'est la table Employe .
Entite(Id_Entite(clé primaire) , Nom_Entite , Type_Entite , Entite_Parent)
Employe(Id_Employe(clé primaire) , Nom_Emp , Prenom_Emp , Date_Naissance , Tele_Emp , Ville , Email_Emp , Id_Entite(clé étrangère))
Le Probleme Quand je veux ajouter une Entite me donne ce Erreur : foreignkeyconstraint R a besoin des valeurs de cles enfants (A) dans la table parente
Le code source est ci-dessus :
private void Form1_Load(object sender, EventArgs e)
{ds.Tables["Entite"].PrimaryKey = new DataColumn[] { ds.Tables["Entite"].Columns["Id_Entite"] };
ds.Tables["Employe"].PrimaryKey = new DataColumn[] { ds.Tables["Employe"].Columns["Id_Employe"] };ForeignKeyConstraint cle = new ForeignKeyConstraint("R", ds.Tables["Employe"].Columns["Id_Entite"], ds.Tables["Entite"].Columns["Id_Entite"]);
cle.UpdateRule = Rule.Cascade;
cle.DeleteRule = Rule.Cascade;cle.AcceptRejectRule = AcceptRejectRule.Cascade
ds.Tables["Entite"].Constraints.Add(cle);
}
private void button1_Click(object sender, EventArgs e)
{
try
{
r = Form1.ds.Tables["Entite"].NewRow();
r[0] = textBox1.Text;
r[1] = textBox2.Text;
r[2] = textBox3.Text;
r[3] = textBox4.Text;
Form1.ds.Tables["Entite"].Rows.Add(r);
Form1.da.InsertCommand = Form1.cn.CreateCommand();
Form1.da.InsertCommand.CommandText = "insert into Entite values (@Id_Entite , @Nom_Entite , @Type_Entite , @Entite_Parent)";
Form1.da.InsertCommand.Parameters.Add("@Id_Entite", SqlDbType.VarChar, 50, "Id_Entite");
Form1.da.InsertCommand.Parameters.Add("@Nom_Entite", SqlDbType.VarChar, 50, "Nom_Entite");
Form1.da.InsertCommand.Parameters.Add("@Type_Entite", SqlDbType.VarChar, 50, "Type_Entite");
Form1.da.InsertCommand.Parameters.Add("@Entite_Parent", SqlDbType.VarChar, 50, "Entite_Parent");
Form1.da.Update(Form1.ds.Tables["Entite"]);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
MessageBox.Show("Bien Enregistrer");
textBox1.Text = textBox2.Text = textBox3.Text = textBox4.Text = "";
}
}Svp aidez moi , Merci beaucoup..
Cordialement
El Mehdi
Réponses
-
Bonjour,
Ta ForeignKeyConstraint doit êter créée de cette manière :
ForeignKeyConstraint cle = new ForeignKeyConstraint("NomCle", ColonneParent, ColonneEnfant)
Or dans ton code, on a :
ForeignKeyConstraint cle = new ForeignKeyConstraint("R", ds.Tables["Employe"].Columns["Id_Entite"], ds.Tables["Entite"].Columns["Id_Entite"]);
Ce qui veut dire que tu as défini la table Employe comme la table parent, alros que ca devrait être l'inverse.
Essaie avec :
ForeignKeyConstraint cle = new ForeignKeyConstraint("R", ds.Tables["Entite"].Columns["Id_Entite"], ds.Tables["Employe"].Columns["Id_Entite"]);
Cordialement,
Thomas
Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr- Marqué comme réponse Marokino1 mardi 25 janvier 2011 18:45
Toutes les réponses
-
Bonjour,
Ta ForeignKeyConstraint doit êter créée de cette manière :
ForeignKeyConstraint cle = new ForeignKeyConstraint("NomCle", ColonneParent, ColonneEnfant)
Or dans ton code, on a :
ForeignKeyConstraint cle = new ForeignKeyConstraint("R", ds.Tables["Employe"].Columns["Id_Entite"], ds.Tables["Entite"].Columns["Id_Entite"]);
Ce qui veut dire que tu as défini la table Employe comme la table parent, alros que ca devrait être l'inverse.
Essaie avec :
ForeignKeyConstraint cle = new ForeignKeyConstraint("R", ds.Tables["Entite"].Columns["Id_Entite"], ds.Tables["Employe"].Columns["Id_Entite"]);
Cordialement,
Thomas
Thomas Aimonetti - C# - Sharplog Engineering - http://www.sharplog.fr- Marqué comme réponse Marokino1 mardi 25 janvier 2011 18:45
-