sql >> Databasteknik >  >> RDS >> Mysql

En till många relation mellan AspNetUsers (Identity) och en anpassad tabell

Jag har gjort exakt detta på ett antal projekt

Till exempel har jag en en till många relation från ASPNetUsers till Notifications. Så i min ApplicationUser-klass i IdentityModels.cs har jag

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

Min aviseringsklass har det omvända

public virtual ApplicationUser ApplicationUser { get; set; }

Som standard kommer EF då att skapa en kaskadradering från Notification to AspNetUsers som jag inte vill ha - så jag har också detta i min kontextklass

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

Kom bara ihåg att definitionen för AspNetUSers är utökad i ApplicationUser-klassen inuti IdentityModels.cs som genereras åt dig av Visual Studios ställningar. Behandla det sedan som vilken annan klass/tabell som helst i din app

UPPDATERING - här är exempel på kompletta 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. Olika db för att testa i Django?

  2. Hur släpper man alla tabeller från databasen med manage.py CLI i Django?

  3. Postgres rekursiv fråga med row_to_json

  4. MySQL PI() Funktion – Returnera värdet av π (pi)