2013-06-23 23 views
5

Ho una tabella con campo nvarchar (MS SQL Server 2008 R2). Per il test, questo codice funziona bene:Unicode con Entity Framework

Update [Screenshots] set name=N'Значение' where id=230246 

in questo momento ho creato il modello Entity Framework, ho impostato Unicode come True

enter image description here

poi cerco di aggiornare il mio record:

public void Put(FormDataCollection formData) 
    { 
     string filename = formData.Get("filename"); 
     var screenshot = c.Screenshots.Where(p => p.filename == filename).FirstOrDefault(); 
     if (screenshot != null) 
     { 
      screenshot.name = formData.Get("description"); 
      c.SaveChanges(); 
     } 
    } 

ma ho ottenuto "?????" invece del valore unicode. Come farlo? Conosco il metodo AsNonUnicode, ma questo metodo funziona solo per LINQ.

+1

Il problema potrebbe essere alla fine del database e non alla fine EF? –

+0

come ho scritto, Aggiorna [Screenshot] imposta nome = N'Значение 'dove id = 230246 funziona correttamente. Potrei essere sicuro, quel problema non è alla fine del database? –

risposta

3
  1. Sei sicuro che formData.Get("description") rendimenti stringa UTF-8 (che non è convertito da qualche parte)?

  2. Qual è il tuo approccio nel framework delle entità? Codice-primo/Design-primo/Database-prima?
    cercare di rimuovere base di dati e ricreare - rimuovere database e poi in Designer tasto destro ->Generate database from model...

  3. Get Entity Framework Profiler dal Nu-get package manager e vedere cosa query è l'invio al database.

+0

"Sei sicuro che formData.Get (" description ") restituisce stringa UTF-8?" questo è sfortunatamente sfortunato. Tutte le stringhe in .NET sono Unicode. Una domanda migliore sarebbe se restituisce la stringa come inserita nel modulo, cioè senza essere storpiata dalla codifica da qualche parte. – millimoose

+0

@millimoose - sì, volevo dire questo :-). –

+0

sicuro, controllato dal debugger –