2011-09-08 17 views
31

Ho questa impostazione nel mio modello:Entity Framework dati NOTE Set StringLength VarChar

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

per impostare la lunghezza massima a 250 nel database che è grande.

Tuttavia è impostato come nvarchar (250) quando la persona del database si aspettava varchar (250).

Qualcuno può dirmi come impostarlo come un varchar dal modello anziché un nvarchar?

risposta

61

Usa ColumnAttribute per dare il tipo di dati

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

Oppure utilizzare API fluente

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

Grazie! Avevo paura di dover usare 'EntityFunctions.AsNonUnicode' dappertutto – norepro

+0

Risposta modificata per riflettere che l'argomento nome a ColumnAttribute non è richiesto - puoi passare solo l'argomento TypeName con nome se lo desideri. Anche discusso qui: http://stackoverflow.com/q/5109170/176877 –

+1

Ho sprecato un giorno intero impostando i dettagli della colonna come [Colonna ("ToDoItem", TypeName = "NVARCHAR (250)")] risultante in misteriosi errori EF (squadra EF di cortesia). Ora ho capito che la lunghezza della corda è un attributo separato del tutto. Hai salvato il mio ultimo giorno di frustrazione almeno. Grazie. – RBT