2010-01-26 3 views
0

J'ai un problème avec linq2sql.Problème avec insertion en db avec ASP.NET

Comme vous le voyez ci-dessous j'ai deux tables de db - Dzieckos et Opiekuns. Dans Dzieckos j'ai idOpiekun. Comment insérer cette idOpiekun comme ci-dessous, couse j'ai une erreur dans FK dans la ligne d'exemple.

protected void btDodaj_Click(object sender, EventArgs e) 
{ 
    DataClassesDataContext db = new DataClassesDataContext(); 
    Dziecko dz = new Dziecko(); 
    dz.imie = this.tbImieDz.Text; 
    dz.nazwisko = this.tbNazwiskoDz.Text; 
    dz.nrGrupy = Convert.ToInt32(this.dropGrupa.SelectedValue); 
    Opiekun op = new Opiekun(); 
    op.imie = this.tbImieRodz.Text; 
    op.nazwisko = this.tbNazwiskoRodz.Text; 
    op.telefon = Convert.ToInt32(this.tbTel.Text); 
    dz.idOpiekun = op.idOpiekun; **//error line with FK** 
    db.Dzieckos.InsertOnSubmit(dz); 
    db.Opiekuns.InsertOnSubmit(op); 
    db.SubmitChanges(); 
    Label2.Text = "Dodano " + this.tbImieDz.Text.ToString() + " " + this.tbNazwiskoDz.Text.ToString(); 
} 

Répondre

1

vous devriez être en mesure de le faire comme ceci:

dz.Opiekun = op; 

et enlever cette ligne:

db.Opiekuns.InsertOnSubmit(op); 
+0

Tnx! Fonctionne parfaitement !! – netmajor

1

Si vous avez correctement configuré votre dbml pour gérer la clé étrangère, cela devrait fonctionner:

protected void btDodaj_Click(object sender, EventArgs e) 
{ 
    using(DataClassesDataContext db = new DataClassesDataContext()) 
    { 
     Dziecko dz = new Dziecko(); 
     dz.imie = this.tbImieDz.Text; 
     dz.nazwisko = this.tbNazwiskoDz.Text; 
     dz.nrGrupy = Convert.ToInt32(this.dropGrupa.SelectedValue); 

     Opiekun op = new Opiekun(); 
     dz.Opiekun.Add(op); //Linq to Sql will handle it 
     op.imie = this.tbImieRodz.Text; 
     op.nazwisko = this.tbNazwiskoRodz.Text; 
     op.telefon = Convert.ToInt32(this.tbTel.Text); 
     db.Dzieckos.InsertOnSubmit(dz); 
     db.SubmitChanges(); 

     Label2.Text = "Dodano " + this.tbImieDz.Text.ToString() + " " + this.tbNazwiskoDz.Text.ToString(); 
    } 
} 
+0

Cela fonctionne pour moi, mais Je trouve aussi que je dois aussi faire: db.Opiekuns.InsertOnSubmit (op); aussi, pour une raison quelconque, parfois mon application a échoué sans cela. –

+0

Malheureusement, Opiekun ne possède pas de méthode Ajouter:/ – netmajor