8

Quindi ho una classe di modello UserProfile come parte di SimpleMembership. In esso ho bisogno di memorizzare un identificatore precedente esistente in un altro DB di tipo char(36). Mi piacerebbe cambiarlo in qualcosa di più sensato come un identificatore univoco, ma è fuori portata per le attività di oggi.Code prime colonne con tipo char (36)

La mia annotazione corrente crea una colonna nvarchar(36)

[StringLength(36)] 
public string UserIdentifier{ get; set; } 

mi piacerebbe una colonna di char(36) invece. È possibile?

+0

La risposta a questa [domanda] (http://stackoverflow.com/questions/6760765/how-do-i- map-a-char-property-using-the-entity-framework-4-1-code-only-fluent-a) può aiutare. – zsong

+0

@sza No, non l'ha fatto. Ho trovato un modo. Grazie comunque. – spender

risposta

13

Se si desidera mantenere con annotazioni di dati, poi basta utilizzare semplicemente:

[StringLength(36)] 
[Column(TypeName = "char")] 
public string UserIdentifier{ get; set; } 
7

Ok. Ho trovato la risposta da solo.

Se creo la seguente classe di configurazione per il mio ProfiloUtente:

class UserProfileConfiguration:EntityTypeConfiguration<UserProfile> 
{ 
    public UserProfileConfiguration() 
    { 
     this.Property(p => p.UserIdentifier) 
      .HasMaxLength(36) 
      .IsFixedLength() 
      .IsUnicode(false); 
    } 
} 

poi sovrascrivere OnModelCreating nel mio DbContext per aggiungere questa configurazione:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 

     modelBuilder.Configurations.Add(new UserProfileConfiguration()); 
    } 

allora io sono in affari e ho un Colonna char(36). Sìì.

+0

Bel lavoro. Ricorda di contrassegnarlo come risolto! – jurgemaister