2013-06-23 15 views
5

Mam tabelę z polem nvarchar (MS SQL Server 2008 R2). Do testowania ten kod działa poprawnie:Unicode z Entity Framework

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

teraz stworzyłem modelu Entity Framework, mam zestaw Unicode jako prawdziwe

enter image description here

następnie próbuję zaktualizować rekord:

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

ale dostałem "?????" zamiast wartości Unicode. Jak to zrobić? Wiem o metodzie AsNonUnicode, ale ta metoda działa tylko dla LINQ.

+1

Czy problem może występować na końcu bazy danych, a nie na końcu EF? –

+0

jak napisałem, Update [Screenshots] set name = N'Значение "gdzie id = 230246 działa dobrze. Czy mogę mieć pewność, że problem nie występuje na końcu bazy danych? –

Odpowiedz

3
  1. Czy jesteś pewien, że formData.Get("description") powraca UTF-8 string (że nie jest przekształcany gdzieś)?

  2. Jakie jest Twoje podejście w strukturze podmiotu? Kod-pierwszy/Design-pierwszy/Baza-pierwszy?
    Spróbuj usunąć bazę danych i odtworzyć - usunąć bazę danych, a następnie kliknij prawym przyciskiem myszy w projektanta ->Generate database from model...

  3. Get Entity Framework Profiler z Nu-get menedżera pakietów i zobaczyć, co jest wysyłanie zapytań do bazy danych.

+0

"Czy jesteś pewien, że formData.Get (" description ") zwraca ciąg znaków UTF-8?" jest to sformułowane niestety. Wszystkie ciągi w .NET są Unicode. Lepszym pytaniem byłoby, gdyby zwracał ciąg znaków wprowadzony do formularza, tj. Bez bycia zaklętym przez kodowanie gdzieś. – millimoose

+0

@millimoose - tak, miałem na myśli to :-). –

+0

pewnie, sprawdzone przez debugger –