代码之家  ›  专栏  ›  技术社区  ›  netmajor

使用ASP.NET在数据库中插入时出现问题

  •  0
  • netmajor  · 技术社区  · 16 年前

    我对linq2sql有问题。

    如您所见,我有两张来自DB-Dzieckos和Opiekuns的表。在迪切科斯,我有伊多皮埃昆。如何像下面一样插入这个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();  
    }
    
    2 回复  |  直到 16 年前
        1
  •  1
  •   Klaus Byskov Pedersen    16 年前

    您应该能够这样做:

    dz.Opiekun = op;
    

    并删除此行:

    db.Opiekuns.InsertOnSubmit(op); 
    
        2
  •  1
  •   Alex Bagnolini    16 年前

    如果您已经正确配置了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(); 
        } 
    }