8

Sto cercando disperatamente di creare una relazione One to Many tra la tabella AspNetUsers di Identity 2.0 e una tabella personalizzata chiamata Map (un utente può avere molte mappe, ma un la mappa può avere solo un utente) Ho provato per lo più tutte le soluzioni disponibili in questo sito e ho anche perso molti giorni cercando altre anime trovate nel web. Sono bloccato. Niente sembra funzionare per me. Sono nuovo di MVC e EF quindi, in sostanza, penso di aver bisogno di una sorta di guida passo-passo. Qualcuno può essere gentile a fornirmi una guida per principianti per ottenere questo risultato da un progetto MVC5 appena creato. Grazie e scusa per la domanda di ridondata che ho fatto.Uno a molti rapporti tra AspNetUsers (Identity) e una tabella custum

PS. Posso e sono riuscito a creare ogni tipo di relazione tra due tabelle personalizzate, ma non tra AspNetUsers e la mia tabella Mappa. Grazie molto molto in anticipo.

+0

Io parto dal presupposto che si sta utilizzando il codice primo approccio. quello che preferirò è provare a generare un edmx per il database e quindi esaminare le classi generate per la tabella di aspnetuser, si otterrà l'idea. per prima cosa crea una relazione con la tabella personalizzata e a livello di db stesso –

+0

@ meajaygoel posso chiederti qualche tipo di codice per favore? – SergioPetrarca

+0

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

risposta

0
+0

Grazie mille per il vostro aiuto, ho appurato che, sfortunatamente, non riesco ancora a ottenere quello che voglio .. Fondamentalmente ho bisogno di creare un nuovo Db Table (Mappe) con un semplice rapporto uno a molti tra AspNetUser (One AspNetUser può avere molte mappe). Se hai tempo puoi fornirmi del codice? Grazie mille. – SergioPetrarca

0
+0

Grazie mille per il tuo aiuto, ho appurato che, sfortunatamente, non riesco ancora a ottenere quello che voglio .. Fondamentalmente ho bisogno di creare un nuovo Db Table (Maps) con una relazione semplice tra molte AspNetUser (Un AspNetUser può avere molte mappe). Se hai tempo puoi fornirmi del codice? Grazie mille – SergioPetrarca

7

ho fatto esattamente questo su un numero di progetti

Per esempio ho una relazione uno a molti da ASPNetUsers a Notifiche. Quindi, nella mia classe ApplicationUser IdentityModels.cs all'interno devo

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

La mia classe Notifiche ha il rovescio

public virtual ApplicationUser ApplicationUser { get; set; } 

Per impostazione predefinita EF sarà quindi creare un'eliminazione a cascata dalla notifica alla AspNetUsers che io non voglio - così Ho anche questo nella mia classe Context

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

Basta ricordare la definizione per AspNetUSers è esteso nella classe ApplicationUser all'interno IdentityModels.cs che viene generato per te dai ponteggi degli studi visivi. Poi trattarlo come qualsiasi altra classe/tavolo nella vostra applicazione

AGGIORNAMENTO - qui ci sono esempi di modelli full

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

grazie ..Penso che questo sia ciò di cui ho bisogno, puoi fornirmi un esempio completo del tuo modello di notifica e il codice relativo della classe del tuo modello ApplicationUser: IdentityUser, sto cercando di ottenere lo stesso, ma non posso..grazie molto ! – FabioEnne

+0

Ho aggiornato la risposta per includerla. –

+0

Grazie mille! Ci proverò questo fine settimana! devo anche abilitare le migrazioni e aggiornare qualcosa? – FabioEnne