2015-11-04 7 views
6

Ich habe ein Projekt mit ASP.NET MVC in einem Identitäts-Framework erstellt. Er hat eine neue Tabelle erstellt AspNetUsers, aber ich möchte Spalten in diese Tabelle wie Geburtstag, Profilbild usw. hinzufügen ... Wie kann ich das tun?Spalte in Tabelle mit ASP.NET-Identität hinzufügen

Kann ich die Abfrage unten in meinem SQL Server Management Studio ausführen?

ALTER TABLE AspNetUsers ADD ProfilePicture NVARCHAR(100); 
ALTER TABLE AspNetUsers ADD BirthDay DATE; 

Oder ist es komplexer? Ich kann nicht mit Identitätsframework arbeiten, also muss ich es mit ADO.NET und dem .NET Framework 4 machen.

+3

Sie müssen die entsprechende Eigenschaft zu Ihrer 'IdentityUser'-Klasse hinzufügen und dann eine Entity Framework-Migration erstellen, die dann das ap ausführt Propriate SQL in Ihrer Datenbank, wenn Sie die Migration ausführen. http://blogs.msdn.com/b/webdev/archive/2013/10/16/customing-profile-information-in-asp-net-identity-in-vs-2013-templates.aspx – James

Antwort

15

Ich habe es gefunden! @ James hat mir einen Artikel vorgeschlagen, der funktioniert.

Schritte:

  1. Typ in der Konsolenmanager dieser Code:

    Enable-Migrations 
    

    Quelle: blogs.msdn.com

  2. Fügen Sie in der Klasse ApplicationUser die gewünschte Eigenschaft hinzu.

    public DateTime? Birthdate { get; set; } 
    
  3. in der Konsole Manager-Typ dieser Code:

    Add-Migration "Birthdate" 
    
  4. , nachdem es die Datenbank Whit diesen Code aktualisieren:

    Update-Database 
    

Ergebnis: eine neue Spalte wird zur Datenbank mit dem Namen "Geburtsdatum" hinzugefügt und gibteindas kann null sein.

+0

Danke für der Post.Es half mir! In meinem Fall musste ich Spalte des Typs int.Ich habe die Spalte hinzugefügt, wie in Ihrem Beitrag beschrieben, aber jetzt muss ich die hinzugefügte int-Spalte als Fremdschlüssel definieren. Haben Sie eine Idee, wie kann es umgesetzt werden? – Michael

6

Angenommen, Sie eine neue Spalte hinzufügen möchten dem Namen "Vorname":

Schritt 1: Modelle/IdentityModels.cs

den folgenden Code in die "ApplicationUser" Klasse hinzufügen:

public string FirstName { get; set; } 

Schritt 2: Modelle/AccountViewModels.cs

Fügen Sie den folgenden Code in die "RegisterViewModel" Klasse:

public string FirstName { get; set; } 

Schritt 3: Views/Register.cshtml

Vorname Eingangs Textbox zur Ansicht hinzufügen:

<div class="form-group"> 
     @Html.LabelFor(m => m.FirstName, new { @class = "col-md-2 control-label" }) 
     <div class="col-md-10"> 
      @Html.TextBoxFor(m => m.FirstName, new { @class = "form-control" }) 
     </div> 
</div> 

Schritt 4:

Gehen Sie zu Extras> NuGet Manager> Package Manager Console

Schritt A: Geben Sie „Enable-Migrationen "Und drücken Sie die Eingabetaste
Schritt B: Geben Sie" Add-Migration "FirstName" "ein und drücken Sie die Eingabetaste
Schritt C: Geben Sie" Update-Database "ein a nd drücken Sie die Eingabetaste
dh

PM> Enable-Migrations 
PM> Add-Migration "FirstName" 
PM> Update-Database 

Schritt 5: Controller/AccountController.cs

Go Aktion registrieren und fügen Sie "Vorname = model.FirstName" der ApplicationUser dh

var user = new ApplicationUser { UserName = model.Email, Email = model.Email, FirstName = model.FirstName} 
Verwandte Themen