2011-09-08 17 views
31

mam to ustawienie w moim modelu:Entity Framework danych Adnotacje Set StringLength VarChar

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

ustawić maksymalną długość do 250 w bazie danych, która jest świetna.

Jednak jest ustawiony jako nvarchar (250), gdy osoba bazy danych oczekiwała varchar (250).

Czy ktoś może mi powiedzieć, jak ustawić go jako varchar z modelu w przeciwieństwie do nvarchar?

Odpowiedz

61

Zastosowanie ColumnAttribute dać dataType

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

Albo użyć Fluent API

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

Dzięki! Obawiałem się, że będę musiał użyć 'EntityFunctions.AsNonUnicode' wszędzie. – norepro

+0

Edytowana odpowiedź, aby odzwierciedlić, że argument name dla ColumnAttribute nie jest wymagany - możesz przekazać tylko nazwany argument TypeName, jeśli chcesz. Również omówione tutaj: http://stackoverflow.com/q/5109170/176877 –

+1

Zmarnowałem jeden cały dzień ustawiając moje szczegóły kolumny jako [Column ("ToDoItem", TypeName = "NVARCHAR (250)")] skutkujące tajemniczymi błędami EF (dzięki uprzejmości zespołu EF). Teraz uświadomiłem sobie, że długość łańcucha jest zupełnie osobnym atrybutem. Uratowałeś jeszcze jeden dzień mojej frustracji. Dzięki. – RBT

Powiązane problemy