29 messaggi dal 08 marzo 2007
Ciao a tutti e complimenti come al solito per l'ottimo lavoro.

In ufficio stiamo giocando da qualche giorno con wpf e la nuova datagrid e stiamo provando ad implementare lo strato DAL usando EF.

Il nostro problema e' il seguente: se bindiamo alla datagrid una entity che ha una (o piu') navigation property che vengono visualizzate utilizzando una combobox abbiamo dei problemi ad effettuare l'aggiornamento dell'intera entity se la proprieta' modificata e' una di quelle visualizzate tramite combobox.

Se invece modifichiamo una qualsiasi altra proprieta' il problema non esiste.

Scavando un po' abbiamo visto che il buco sta nel fatto che modificando la navigation property e provando a riassociarla al genitore quest'ultimo ha un riferimento incoerente dell'entity key e quindi non esegue l'aggiornamento.

O almeno e' l'idea che ci siamo fatti in prima battuta.

Tra l'altro, se proviamo a commentare OnIDChanging dell'oggetto Entity che fa da Navigation Property l'aggiornamento va a buon fine.

Qualcuno saprebbe darmi delucidazioni a riguardo?

Grazie mille per l'aiuto :)
mm, non ho capito bene
Che eccezioni hai? E perché l'inibire la notifica del cambio dell'id (strano che cambi) risolve la cosa?

Ciao

Il mio blog
Homepage
29 messaggi dal 08 marzo 2007
Ciao, Auguri e Grazie per la risposta!!!!

Riguardo il perche' inibire la notifica del cambio....bel domandone, la verita' e' che non lo so e sto cercando di capirlo  .

Per il resto non ho eccezioni, semplicemente non viene aggiornata la entity, quando arriva sull'OnIDChanging della entity che fa da Navigation Property prova ad eseguirlo e poi esce dalla proprieta' senza finire di eseguire il resto, mentre se lo faccio a codice (quindi impostando manualmente una nuova entityKey) l'aggiornamento viene effettuato.

Mi sembra piu' un problema legato a EF insieme alle combobox, piuttosto che solo di uno o dell'altro.

Tra l'altro quello che mi sconcerta e' che non trovo documentazione a riguardo, come se fossi il solo a cui succede o come se nessuno provasse ad aggiornare una entity con navigation property.

Credo di aver settato correttamente i valori di binding pero' visto l'argomento nuovo (per me almeno ) non posso metterci la mano sul fuoco.

Nello caso specifico uso 2 ObjectDataProvider, uno per l'entity principale(Commesse) e uno per l'entity che fa da navigation property(Nominativi) e setto la combobox della datagrid in questo modo

<my:DataGridComboBoxColumn Header="Nominativo"
ItemsSource="{Binding Source={StaticResource Nominativi}}"
SelectedValuePath="ID"
DisplayMemberPath="RagioneSociale"
SelectedItemBinding="{Binding Nominativo}"
SelectedValueBinding="{Binding Path=Nominativo.ID}">
</my:DataGridComboBoxColumn>

Per la visualizzazione tutto ok, il problema e' se modifico il nominativo nella combobox e provo ad aggiornare l'entity Commesse(che fa da padre).

Grazie ancora e ancora Buone Feste :)

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.