8

Ich versuche verzweifelt, eine One to Many-Beziehung zwischen der AspNetUsers-Tabelle von Identity 2.0 und einer benutzerdefinierten Tabelle namens Map zu erstellen (Ein Benutzer kann viele Maps haben, aber a Karte kann nur einen Benutzer haben) Ich habe versucht, meist alle verfügbaren Lösungen auf dieser Website und auch viele Tage verloren versucht andere Lösungen im Internet gefunden. Ich stecke fest. Nichts scheint für mich zu funktionieren. Ich bin neu in MVC und EF, also denke ich, ich brauche eine Art Schritt-für-Schritt-Anleitung. Kann jemand bitte sehr nett sein, mir einen Anfängerführer zur Verfügung zu stellen, um dieses von einem frisch gemachten MVC5 Projekt zu erreichen. Danke und Entschuldigung für die redundante Frage, die ich gestellt habe.Eins-zu-viele-Beziehung zwischen AspNetUsers (Identity) und einer Kundentabelle

PS. Ich kann und ich bin erfolgreich bei der Erstellung jeder Beziehung zwischen zwei benutzerdefinierten Tabellen, aber nicht zwischen AspNetUsers und meine Map-Tabelle. Vielen Dank im Voraus.

+0

Ich gehe davon aus, dass Sie Code ersten Ansatz verwenden. Was ich bevorzuge ist versuchen, eine edmx für die Datenbank zu generieren und dann in die Klassen für die Tabelle aspnetuser generiert auch zu sehen, Sie werden die Idee bekommen. Erstellen Sie zuerst eine Beziehung zur benutzerdefinierten Tabelle sowie auf db-Ebene selbst. –

+0

@meajaygoel kann ich Ihnen bitte eine Art Code fragen? – SergioPetrarca

+0

http://www.itorian.com/2013/11/customizing-users-profile-to-add-new.html –

Antwort

0
+0

Vielen Dank für Ihre Hilfe, ich appriciated, leider kann ich immer noch nicht erreichen, was ich will .. Grundsätzlich muss ich eine neue Db-Tabelle (Maps) mit einem einfachen erstellen Eine zu viele Beziehung zwischen AspNetUser (Ein AspNetUser kann viele Maps haben). Wenn Sie Zeit haben, können Sie mir bitte einen Code zur Verfügung stellen? Vielen Dank. – SergioPetrarca

0
+0

Vielen Dank für Ihre Hilfe, ich habe geschätzt, dass ich immer noch nicht erreichen kann, was ich will .. Grundsätzlich muss ich eine neue Db Tabelle erstellen (Maps) mit einer einfachen Beziehung zwischen AspNetUser (One AspNetUser) viele Karten). Wenn Sie Zeit haben, können Sie mir bitte einen Code zur Verfügung stellen? Vielen Dank – SergioPetrarca

7

ich genau dies auf einer Reihe getan habe von Projekten

Zum Beispiel habe ich eine eins zu viele Beziehung von ASPNetUsers zu Benachrichtigungen. Also in meinem ApplicationUser Klasse in IdentityModels.cs ich habe

public virtual ICollection<Notification> Notifications { get; set; } 

Meine Benachrichtigungen Klasse die Rückseite hat

public virtual ApplicationUser ApplicationUser { get; set; } 

standardmäßig EF wird dann eine Kaskade von Benachrichtigung löschen AspNetUsers erstellen, die möchte ich nicht - so ich habe auch in meiner Kontextklasse

modelBuilder.Entity<Notification>() 
    .HasRequired(n => n.ApplicationUser) 
    .WithMany(a => a.Notifications) 
    .HasForeignKey(n => n.ApplicationUserId) 
    .WillCascadeOnDelete(false); 

einfach die Definition für AspNetUSers erinnern innerhalb IdentityModels.cs in der ApplicationUser Klasse erweitert Das wird für Sie von Visual Studios Gerüste generiert. Dann behandeln sie wie jede andere Klasse/Tabelle in Ihrer App

UPDATE - hier sind Beispiele für Voll Modelle

public class ApplicationUser : IdentityUser 
{ 

    [StringLength(250, ErrorMessage = "About is limited to 250 characters in length.")] 
    public string About { get; set; } 

    [StringLength(250, ErrorMessage = "Name is limited to 250 characters in length.", MinimumLength=3)] 
    public string Name { get; set; } 

    public DateTime DateRegistered { get; set; } 
    public string ImageUrl { get; set; } 

    public virtual ICollection<Notification> Notifications { get; set; } 

    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) 
    { 
     // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType 
     var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 
     // Add custom user claims here 
     return userIdentity; 
    } 
} 


public class Notification 
{ 
    public int ID { get; set; } 

    public int? CommentId { get; set; } 

    public string ApplicationUserId { get; set; } 

    public DateTime DateTime { get; set; } 

    public bool Viewed { get; set; } 

    public virtual ApplicationUser ApplicationUser { get; set; } 

    public virtual Comment Comment { get; set; } 

} 

}

+0

danke ..Ich denke, das ist, was ich brauche, können Sie mir ein vollständiges Beispiel Ihres Benachrichtigungsmodells und den relativen Code der Klasse Ihres Modells ApplicationUser: IdentityUser, ich versuche, das gleiche zu erreichen, aber ich kann nicht .. Vielen Dank ! – FabioEnne

+0

Ich habe die Antwort aktualisiert, um dies zu berücksichtigen. –

+0

Vielen Dank! Ich werde es dieses Wochenende versuchen! Muss ich auch Migrationen aktivieren und etwas aktualisieren? – FabioEnne

Verwandte Themen