sql >> Database teknologi >  >> RDS >> Mysql

Et til mange forhold mellem AspNetUsers (Identity) og en tilpasset tabel

Jeg har gjort præcis dette på en række projekter

For eksempel har jeg et et til mange forhold fra ASPNetUsers til meddelelser. Så i min ApplicationUser-klasse inde i IdentityModels.cs har jeg

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

Min meddelelsesklasse har det omvendte

public virtual ApplicationUser ApplicationUser { get; set; }

Som standard vil EF så oprette en kaskade sletning fra Notifikation til AspNetUsers, som jeg ikke ønsker - så jeg har også denne i min kontekstklasse

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

Husk blot, at definitionen for AspNetUSers er udvidet i ApplicationUser-klassen inde i IdentityModels.cs, der genereres til dig af Visual Studios stilladser. Behandl det derefter som enhver anden klasse/tabel i din app

OPDATERING - her er eksempler på komplette modeller

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; }

}

}



  1. Codeigniter/PHP tjek om kan oprette forbindelse til databasen

  2. Hvordan udfylder man ListView med db i aktivmappen?

  3. Effektiv strategi til at efterlade et revisionsspor/ændringshistorik for DB-applikationer?

  4. Hvad kræver dette JavaScript?