21 messaggi dal 29 gennaio 2012
Sto usando visul studio community con windows form.
Ho creato un pulsante nel controllo bindingnavigator per salvare i cambiamenti del contesto realizzato con Entity Framework. il codice e' il seguente:
private void SaveToolStripButton_Click(object sender, EventArgs e)
{

try
{
contesto.SaveChanges();
}
catch (OptimisticConcurrencyException)
{
contesto. ???? }

}
Per intercettare l'errore di concorrenza voglio utilizzare il metodo Refresh(RefreshMode.ClientWins,Clienti); ma l'intellisense dopo contesto (vedi ????) non me lo fornisce. Perchè succede questo?
Da considerare che nella documentazione msdn al linq : "https://msdn.microsoft.com/it-it/library/bb896255(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#Vedere anche" il metodo Rfresh è usato normalmente.
Grazie dell'aiuto.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
il metodo Refresh si trova sull'oggetto di tipo ObjectContext ma tu, con EF 6, hai invece a che fare con un oggetto di tipo DbContext che non possiede tale metodo.

Il Refresh non è stato eliminato del tutto; diciamo che è stato solo "nascosto" all'interno del DbContext. Devi riportare alla luce l'ObjectContext in questo modo:
((IObjectContextAdapter)contesto).ObjectContext.Refresh(RefreshMode.ClientWins, Clienti);


ciao,
Moreno

Enjoy learning and just keep making
21 messaggi dal 29 gennaio 2012
Grazie. Non ci sarei mai arrivato da solo.
Una domanda Microsoft, nel passaggio da una versione all'altra indica l'obsolescenza di metodi o classi in modo chiaro e facilmente rintracciabile?
Ciao Bruno.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
sì, quando un metodo o una classe diventano obsoleti, Microsoft (e anche altri sviluppatori di altri prodotti) appongo l'attributo [Obsolete] su di essi. Visual Studio ti segnalerà che stai usando un qualcosa di obsoleto con una sottolineatura ondulata.

Tuttavia, in questo caso l'ObjectContext non è stato propriamente reso obsoleto ma, anzi, è stata introdotta una nuova classe DbContext che ne semplifica l'utilizzo e che rende possibile usare l'approccio code-first. Dato che si tratta di una nuova classe, Visual Studio non ha modo di segnalarti come arrivare ai metodi della "vecchia" classe.

Per capire come fare, in questo caso devi necessariamente tenerti aggiornato e cercare degli articoli in cui sia presentata la nuova classe e il suo utilizzo. Anche chiedere al forum è stata una buona strategia, quindi hai fatto bene così :D

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.