2016-05-03 5 views
0

Ich benutze ASP.NET-Identität für mein Projekt.Auto gefüllt Spalte mit Code zuerst und keine POCO-Eigenschaft

Ich habe eine neue Spalte direkt in der Datenbank in AspNetUsers namens CreationDate erstellt und definiert, dass der Standardwert das aktuelle Datum wäre und es wie erwartet gespeichert wird.

Das Problem ist, dass, wenn ich die Datenbank neu generieren muss ich diese Spalte erneut erstellen. Ich meine, in der Produktion oder in einer neuen Umgebung.

möchte ich wissen, ob es möglich ist, die fluent API in einer Art und Weise zu verwenden ich es in der OnModelCreating (mit seinen Default-Wert) definieren.

Die Klasse ist innen Identität Klassen aus der Vorlage ASP.NET erstellt (ApplicationDbContext, ApplicationUser und so weiter), und ich möchte wissen, ob dies durch die Verwendung möglich ist, direkt das fließend API (und nicht die Vererbung oder creating all the classes).

Antwort

1

Sie müssen die Eigenschaft zur Klasse ApplicationUser hinzufügen, wenn Sie sie mit der Fluent-API manipulieren möchten. Ich verstehe nicht, warum Sie die Standardeigenschaften in ApplicationUser nicht erweitern möchten. Hinzufügen ErstellDatum als Eigenschaft wird es schaffen eine Spalte:

public class ApplicationUser : IdentityUser 
{ 
    //This is the property that will match your column 
    public DateTime CreationDate { get; set; } 

    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager, string authenticationType) 
    { 

     var userIdentity = await manager.CreateIdentityAsync(this, authenticationType); 

     return userIdentity; 
    } 
} 
+0

Ich will nicht die classe nur verlängern, weil ich nicht wirklich in jedem anderen Aspekt benötigen. Diese Spalte wäre möglicherweise nur in der Datenbank zu sehen, ohne dass dafür eine "Ansicht" angezeigt werden muss. Ich verstehe Ihre Lösung, aber ich habe überlegt, ob es möglich wäre, eine Spalte in der Fluent-API zu erstellen, die keine Referenzen im Code enthält (abgesehen von ihrer Erstellung). –

+1

Die Idee hinter EF ist, dass Ihre Datenbank mit Ihrem Modell synchronisiert werden kann (um das zu tun, muss EF jedes einzelne Objekt in Ihrem DB kennen). Nur weil Sie diese Eigenschaft in der Ansicht nicht anzeigen müssen, bedeutet dies nicht, dass Sie sie nicht in Ihrem Code verwenden müssen. Persistenz und Präsentation haben nichts miteinander zu tun. Ich schlage vor, dass Sie es zu Ihrem Code hinzufügen, anstatt ein SQL-Skript erstellen zu müssen, das jedes Mal nach dem Erstellen der Datenbank ausgeführt wird (und Sie erhalten die Quellcodeverwaltung auf diese Weise). –