2011-09-08 36 views
31

tôi có thiết lập này trong mô hình của tôi:Entity Framework dữ liệu Chú thích Set StringLength varchar

[StringLength(250)] 
public string Comment { get; set; } 

để thiết lập chiều dài tối đa đến 250 trong cơ sở dữ liệu đó là rất tốt.

Tuy nhiên nó thiết lập như là nvarchar (250) khi người sở dữ liệu đã mong varchar (250).

Ai đó có thể cho tôi biết làm thế nào để đặt nó như là một varchar từ mô hình như trái ngược với một nvarchar?

Trả lời

61

Sử dụng ColumnAttribute để cung cấp cho các kiểu dữ liệu

[Column(TypeName = "VARCHAR")] 
[StringLength(250)] 
public string Comment { get; set; } 

Hoặc sử dụng thông thạo API

modelBuilder.Entity<MyEntity>() 
    .Property(e => e.Comment).HasColumnType("VARCHAR").HasMaxLength(250); 
+0

Cảm ơn! Tôi sợ rằng tôi sẽ phải sử dụng 'EntityFunctions.AsNonUnicode' ở mọi nơi – norepro

+0

Câu trả lời đã chỉnh sửa để phản ánh rằng đối số tên cho ColumnAttribute không bắt buộc - bạn có thể chuyển đối số TypeName có tên nếu bạn muốn. Cũng đã thảo luận ở đây: http://stackoverflow.com/q/5109170/176877 –

+1

tôi lãng phí cả một ngày chi tiết cài đặt cột của tôi là [Cột ("ToDoItem", TypeName = "NVARCHAR (250)")] dẫn đến sai sót EF bí ẩn (nhóm EF lịch sự). Bây giờ tôi nhận ra chiều dài chuỗi là một thuộc tính riêng biệt hoàn toàn. Bạn đã tiết kiệm thêm một ngày của tôi về sự thất vọng. Cảm ơn. – RBT

Các vấn đề liên quan