1. Biracka_Mjesta (FK_Grad, Broj_Birackog_Mjesta, Code_Birackog_Mjesta) i
2. Clanovi (Sifra_Opstine, Broj_Birackog_Mjesta, Sifra_Birackog_Mjesta).
Evo kako sam podesio databinding za combobox koji vuce podatke iz EntitySeta BirackaMjesta za izbor birackog mjesta kome jedan clan pripada:
<ComboBox Name="cmbBirackoMjesto1" DisplayMemberPath="Naziv_Birackog_Mjesta" SelectedValuePath="/" SelectedItem="{Binding Biracko_Mjesto}"/>
Znaci, vezem ga ne za jedno polje u entitetu, vec za EntityReference (non stop imam zelju da napisem tabela, umjesto entitet). U prevodu, ono biracko mjesto koje izaberem (SelectedValuePath="/") smjesti mi u EntityReference Biracko_Mjesto entiteta Clanovi. EntityReference Biracko_Mjesto je povezan sa entitetom Biracka_Mjesta kompozitnim kljucem po 3 gornja polja.
ItemsSource za combobox podesavam u kodu:
CollectionViewSource cvsBirackaMjesta = new CollectionViewSource();
cvsBirackaMjesta.Source = entities.lista_birackih_mjesta;
this.cmbBirackoMjesto1.ItemsSource = cvsBirackaMjesta.View;
Na pocetku mi je izgledalo da ce ovo da radi. Jer, kada unosim novog clana, i izaberem mu biracko mjesto, sve radi ok, update u bazu takodje, sve je kako treba.
Problem nastaje je kada je Clan vec u Unchanged stanju, tj. kada ga dovucem iz baze, a zelim mu promijeniti biracko mjesto. Kako izaberem neku drugu vrijednost iz combo boxa, evo koji exception dobijem:
A referential integrity constraint violation occurred: A primary key property that is a part of referential integrity constraint
cannot be changed when the dependent object is Unchanged unless it is being set to the association's principal object.
The principal object must be tracked and not marked for deletion.
U aplikaciji imam jos par situacija kada clanovima biram neke druge karakteristike (Struku, Pol, Bracno stanje, itd) ali su to sve veze po jednom polju (surogat kljucevi) i u tim situacijama nemam nikakvih problema.
Googlanjem sam dosao samo do predloga da modifikujem model tako da napravim relaciju samo po jednom polju, sto generalno nije losa ideja jer ja mnogo volim surogat kljuceve, ali u ovom slucaju nemam izbora, jer dobijam podatke sa strane, i moram postovat njihove kljuceve.
Znam da je ovo nova tehnologija, ali mozda neko ima rjesenje, ili ideju, puno bi mi pomoglo.
Pozdrav.