2013-06-23 8 views
5

私は、nvarcharフィールド(MS SQL Server 2008 R2)を持つテーブルを持っています。テストのために、このコードは正常に動作します:エンティティフレームワークを使用したUnicode

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

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

が今、私はEntity Frameworkのモデルを作成し、私はその後、私は私の記録を更新しようとする真の

として

enter image description here

をUnicodeを設定しています

しかし、私は "?????"ユニコード値の代わりに。どうやってするの?私はAsNonUnicodeメソッドについて知っていますが、このメソッドはLINQに対してのみ機能します。

+1

EFの終了ではなくデータベースの終了に問題がありますか? –

+0

私が書いたように、Update [Screenshots] set name = N'Annnnnnどこにid = 230246がうまくいきますか。その問題はデータベースの最後ではないと確信できますか? –

答えて

3
  1. は、(それがどこかに変換されていないこと)formData.Get("description")返しUTF-8文字列を、あなたがよろしいですか?

  2. エンティティフレームワークのアプローチは何ですか?コードファースト/デザインファースト/データベースファースト?
    は、データベースを削除して再作成するようにしてください - データベースを削除してから、デザイナーで右クリック - >

  3. Generate database from model...からEntity Frameworkのプロファイラを取得NU-getパッケージマネージャを、データベースに送信しているクエリ参照してください。

+0

"formData.Get(" description ")がUTF-8文字列を返すのは確かですか?"残念なことに、これは表現されています。 .NETのすべての文字列はUnicodeです。より良い質問は、フォームに入力された文字列を返す場合、つまり、どこかでエンコーディングすることによってマングルされない場合です。 – millimoose

+0

@millimoose - はい、私はそれを意味しました:-)。 –

+0

確かに、デバッガによって確認された –

関連する問題