sql >> Databáze >  >> RDS >> Mysql

Jeden až mnoho vztahů mezi AspNetUsers (Identita) a vlastní tabulkou

Přesně to jsem udělal na řadě projektů

Například mám jeden až mnoho vztah od ASPNetUsers k oznámením. Takže v mé třídě ApplicationUser uvnitř IdentityModels.cs mám

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

Moje třída Notifications má opačný postup

public virtual ApplicationUser ApplicationUser { get; set; }

Ve výchozím nastavení pak EF vytvoří kaskádové smazání z Notification to AspNetUsers, které nechci - takže to mám také ve své Context Class

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

Nezapomeňte, že definice AspNetUSers je rozšířena ve třídě ApplicationUser v rámci IdentityModels.cs, kterou pro vás generuje lešení vizuálních studií. Poté s ním zacházejte jako s jakoukoli jinou třídou/tabulkou ve vaší aplikaci

AKTUALIZACE – zde jsou příklady úplných modelů

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. chyba syntaxe:'oddělovač ' zde není platný vstup

  2. výsledek dotazu mysql do pole php

  3. Oracle - převod mnoha formátů data na jedno formátované datum

  4. Podmíněné VLOŽENÍ DO MySQL – KDE NEEXISTUJE