8

So habe ich eine UserProfile-Modell-Klasse als Teil von SimpleMembership. Darin muss ich eine Legacy-Kennung speichern, die in einem anderen DB vom Typ existiert. Ich würde es gerne zu etwas Sinnvollerem wie einem einzigartigen Identifikator ändern, aber das gehört nicht zu den heutigen Aktivitäten.Code erste Spalten mit Typ char (36)

Meine aktuelle Anmerkung erstellt eine Spalte nvarchar(36)

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

ich stattdessen eine Spalte von char(36) möchte. Ist das möglich?

+0

Die Antwort auf diese [Frage] (http://stackoverflow.com/questions/6760765/how-do-i- map-a-char-property-using-das-entity-framework-4-1-code-only-fluent-a) kann helfen. – zsong

+0

@sza Nein, tat es nicht. Ich habe einen Weg gefunden. Danke trotzdem. – spender

Antwort

13

Wenn Sie mit Data Annotations halten wollen, dann benutzen Sie einfach einfach:

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

Ok. Ich habe die Antwort selbst gefunden.

Wenn ich die folgende Konfiguration Klasse für meine Userprofile zu erstellen:

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

dann außer Kraft setzen OnModelCreating in meinem DbContext diese Konfiguration hinzuzufügen:

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

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

dann bin ich im Geschäft und ich bekomme ein char(36) Spalte. Yay.

+0

Gute Arbeit. Denken Sie daran, es als gelöst zu markieren! – jurgemaister

Verwandte Themen