2010-01-26 34 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