使用ASP.NET在db中插入的问题

时间:2010-01-26 13:08:06

标签: c# asp.net linq linq-to-sql

我对linq2sql有疑问。

如下所示,我有两张来自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();  
}

2 个答案:

答案 0 :(得分: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(); 
    } 
}

答案 1 :(得分:1)

你应该能够这样做:

dz.Opiekun = op;

并删除此行:

db.Opiekuns.InsertOnSubmit(op);