Mikelly, hvala ti, sve sam te skontao lepo. Problem je sto meni to iz nekog razloga ne pomaze. Pokusacu da lepse objasnim sta se desava nakon sto sam poprilicno izdvojio konkretan deo koji mi pravi sranja od nebitnih detalja.
Znaci, za sada uopste nema delete. Takodje, nema ni tri tabele, nego samo ova najjednostavnija opcija sa dve tabele.
Problem nastane kad unesem novi element master tabele (ent_Element), a za taj novouneseni koji ne sinhronizujem sa bazom takodje krenem s unosom novih zapisa u slave tabeli (ent_ElementByInstrument). U tom trenutku se nadjem u sledecoj situaciji: master ima sva polja unesena, a jedino njegov ID (primary key) je -1 (to ne unosim ja). Ovi njegovi zapisi iz slejv tabele koji s us njim povezani preko svog Foreign key-a (ElementID) i kojima je taj foreign key u tom trenutku ==-1 kad krenu da se upisuju u tabelu pucaju.
To sam i dokazao, jer nakon sto se uradi update master tabele, program puca pre zavrsetka apdejtovanja slejva.
Ovo je kod kojim pokusavam da apdejtujem bazu. Napominjem da ne izvrsavam nikakav delete niti ista slicno, da ne bi bilo konflikata te vrste. Ovo se izvrsava tako sto dodam novi element u master (ListBox), popunim mu ove podatke koji su obavezni, nakon cega unesem nekoliko zapisa u slave (DataGridView) i kliknem na save koji pokrece ovu funkciju:
Code:
public void save(){
MessageBox.Show("Poceo save");
DataRow [] dr = null;
dr = apolloDataSet.ent_Element.Select(null, null, DataViewRowState.Added);
if(dr != null) { ent_ElementTableAdapter.Update(dr); }
else { MessageBox.Show("Element null"); }
MessageBox.Show("Prosao master");
dr = apolloDataSet.ent_ElementByInstrument.Select(null, null, DataViewRowState.Added);
if(dr != null) { ent_ElementByInstrumentTableAdapter.Update(dr); }
else { MessageBox.Show("ElementByInstrument null"); }
MessageBox.Show("Prosao slave");
}
Poslednji MessageBox koji iskoci je "Prosao master", nakon cega iskace exception.
Da nije moja komplet logika pogresna? Mozda je to sto ja pokusavam nemoguce i baza ne moze da brine sama o tome, nego ja zaista moram da radim update baze sam nakon svakog unosa?
P. S. Ti si pomenuo DataViewRowState.Modified. Ovde postoji DataViewRowState.ModifiedCurrent i DataViewRowState.ModifiedOriginal. Cemu koji od njih sluzi? MSDN u stilu salterske radnice lepo za jedan kaze: "Pogledaj ovaj drugi", a za ovaj drugi upucuje na prvi, pa nemam pojma kad koji da koristim.
De si Deda...