2013-06-23 19 views
5

Ich habe eine Tabelle mit Nvarchar-Feld (MS SQL Server 2008 R2). Für die Prüfung, funktioniert dieser Code fein:Unicode mit Entity Framework

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

jetzt habe ich Modell Entity Framework, ich habe ich versuche, meinen Rekord zu aktualisieren Unicode als wahre

enter image description here

dann eingestellt:

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(); 
     } 
    } 

aber ich habe "?????" anstelle von Unicode-Wert. Wie es geht? Ich kenne AsNonUnicode-Methode, aber diese Methode funktioniert nur für LINQ.

+1

Könnte das Problem am Datenbankende liegen - und nicht am EF Ende? –

+0

wie ich schrieb, Update [Screenshots] set name = N'Зnачение 'wo ID = 230246 funktioniert gut. Kann ich mir sicher sein, dass das Problem nicht am Ende der Datenbank liegt? –

Antwort

3
  1. Sind Sie sicher, dass formData.Get("description") kehrt UTF-8-String (dass es nicht umgesetzt wird irgendwo)?

  2. Was ist Ihr Ansatz im Entitätsrahmen? Code-zuerst/Design-zuerst/Datenbank-zuerst?
    Versuchen Datenbank zu entfernen und neu erstellen - Datenbank entfernen und dann in Designer Rechtsklick ->Generate database from model...

  3. Erhalten Sie Paket-Manager Entity Framework Profiler von Nu-und sehen, was Abfrage Datenbank sendet.

+0

"Sind Sie sicher, dass formData.Get (" description ") UTF-8 string zurückgibt?" das ist leider phrasiert. Alle Zeichenfolgen in .NET sind Unicode. Eine bessere Frage wäre, wenn sie die Zeichenfolge zurückgibt, wie sie in das Formular eingegeben wurde, d. H. Ohne durch Codieren irgendwo entstellt zu werden. – millimoose

+0

@millimoose - ja, ich meinte das :-). –

+0

sicher, überprüft von Debugger –