2010-01-26 35 views
0

我有linq2sql的问题。用db插入问题用ASP.NET

正如你在下面看到的,我有两个db - Dzieckos和Opiekuns表。在Dzieckos我有idOpiekun。如何插入这个像下面这样的idOpiekun,我在例子行中有FK错误。

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(); 
} 

回答

1

你应该能够做到这一点是这样的:

dz.Opiekun = op; 

和删除这条线:

db.Opiekuns.InsertOnSubmit(op); 
+0

Tnx!完美的作品! – netmajor 2010-01-26 15:26:49

1

如果你已经正确配置您的dbml处理外键,这应该工作:

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

这对我有用,但我也发现我也需要:db.Opiekuns.InsertOnSubmit(op);无论出于何种原因,我的应用有时也会失败。 – 2010-01-26 13:39:19

+0

不幸Opiekun没有方法地址:/ – netmajor 2010-01-26 15:23:55