11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
l'instanza di user che ricevi come parametro dell'action non è proprio uguale a quella che avevi ottenuto da Entity Framework.
EF, per default, non restituisce mai istanze delle tue classi ma dei "proxy", ovvero tipi di oggetto che derivano dalle tue classi. Questo gli serve per sapere, ad esempio, che deve stabilire relazioni tra due entità nel momento in cui assegni uno UserProfile alla proprietà di navigazione dello User. Grazie ai proxy, non è necessario assegnare sia la proprietà di navigazione che la foreign key.

Tu però sei costretto a farlo perché, nel momento in cui l'entità inizia ad essere tracciata, il DbContext non sa raccapezzarsi e non può sapere se deve considerare valido l'oggetto che hai assegnato alla proprietà di navigazione o il valore della foreign key (che mi sembra di capire non siano coerenti a meno che non esegui questa riga).
user.UserProfileId = user.UserProfile.UserProfileId;


Le altre due righe servono a rendere noto al DbContext che esistono le entità che poi andrai a persistere.

Secondo me dovresti provare ad estrarre le entità dal db e ad aggiornarle con il TryUpdateModel.

ciao,
Moreno

Enjoy learning and just keep making

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.