2009-05-22 9 views
10

In Linq To Sql, quando si aggiorna una delle mie entità, Faculty, sto creando una nuova istanza dell'oggetto Faculty, quindi inizializzando alcune delle proprietà con valori forniti dall'utente .Linq per SQL Allegare/aggiornare oggetto Entity

Se si allega questo nuovo oggetto al set di entità e si inviano modifiche, le proprietà che non ho impostato assumono il valore predefinito di qualsiasi tipo di dati.

Come posso aggiornare il nuovo oggetto in modo che le proprietà che sono state impostate mantengano i loro valori e le proprietà che non sono state impostate ottengano i valori dal database?

Grazie

+0

solo per curiosità, i tipi nulli "GUID"? – vidalsasoon

+0

Non sono numeri interi –

risposta

14

Hai provato

context.Refresh(RefreshMode.OverwriteCurrentValues, faculty);

dopo inviare le modifiche dove context è il vostro linq2sql DataContext e faculty è il soggetto che si desidera aggiornare?

+0

Ho notato che è anche necessario eseguire 'yourBindingSource.ResetCurrentItem();' se si sta aggiornando l'entità all'esterno dell'evento 'CurrentChanged' dell'origine di associazione. – Dor

0

Che dire recuperare l'oggetto dal database, quindi cambiare i valori appropriati, quindi presentando l'aggiornamento?

+0

Sto mantenendo un codice che utilizza il metodo attach e non sono del tutto sicuro del motivo per cui non è stato scritto per fare ciò che suggerisci di iniziare. –

+0

Penso che si stia riferendo alla creazione di una nuova voce in una tabella. – vidalsasoon

+0

Oh! Ora ricordo. È perché c'è un campo timestamp chiamato versione. Fare ciò che hai suggerito causa questo errore: il valore del membro 'Versione' di un oggetto di tipo 'Faculty' è cambiato. Un membro che è calcolato o generato dal database non può essere modificato. –