2013-06-23 44 views
5

Tôi có một bảng với trường nvarchar (MS SQL Server 2008 R2). Để thử nghiệm, mã này hoạt động tốt:Unicode với Entity Framework

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

ngay bây giờ tôi đã tạo mô hình Entity Framework, tôi đã thiết Unicode như Đúng

enter image description here

sau đó tôi cố gắng cập nhật hồ sơ của tôi:

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

nhưng tôi đã nhận "?????" thay vì giá trị unicode. Làm thế nào để làm nó? Tôi biết về phương pháp AsNonUnicode, nhưng phương pháp này chỉ hoạt động cho LINQ.

+1

Sự cố có thể ở cuối cơ sở dữ liệu - chứ không phải kết thúc EF? –

+0

như tôi đã viết, Cập nhật [Ảnh chụp màn hình] đặt tên = N'Значение 'nơi id = 230246 hoạt động tốt. Tôi có thể chắc chắn, vấn đề đó không phải là ở cuối cơ sở dữ liệu? –

Trả lời

3
  1. Bạn có chắc chắn rằng formData.Get("description") trả về chuỗi UTF-8 (không được chuyển đổi ở đâu đó)?

  2. Cách tiếp cận của bạn trong khung pháp nhân là gì? Code-first/Thiết kế-đầu tiên/Cơ sở dữ liệu-đầu tiên?
    Cố gắng loại bỏ cơ sở dữ liệu và tạo - loại bỏ cơ sở dữ liệu và sau đó trong thiết kế nhấn chuột phải ->Generate database from model...

  3. Nhận Entity Framework Profiler từ Nu-get quản lý gói và xem những gì truy vấn được gửi đến cơ sở dữ liệu.

+0

"Bạn có chắc chắn rằng formData.Get (" description ") trả về chuỗi UTF-8 không?" điều này là không may. Tất cả các chuỗi trong .NET là Unicode. Một câu hỏi hay hơn là nếu nó trả về chuỗi như được nhập vào biểu mẫu, tức là không bị xáo trộn bằng mã hóa ở đâu đó. – millimoose

+0

@millimoose - vâng, tôi có nghĩa là :-). –

+0

chắc chắn, được kiểm tra bởi trình gỡ lỗi –