2010-01-26 2 views
0

У меня проблема с linq2sql.Проблема со вставкой в ​​db с ASP.NET

Как вы видите ниже, у меня есть две таблицы из db - Dzieckos и Opiekuns. В Dzieckos у меня есть idOpiekun. Как вставить этот idOpiekun, как показано ниже, couse у меня ошибка в 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

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); тоже, по какой-то причине, иногда мое приложение провалилось без этого. –

+0

К сожалению, у Opiekun нет метода Добавить:/ – netmajor

Смежные вопросы