Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Relacja jeden do wielu między AspNetUsers (tożsamość) a tabelą niestandardową

Zrobiłem dokładnie to w wielu projektach

Na przykład mam relację jeden do wielu od ASPNetUsers do powiadomień. Więc w mojej klasie ApplicationUser wewnątrz IdentityModels.cs mam

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

Moja klasa powiadomień ma odwrotną stronę

public virtual ApplicationUser ApplicationUser { get; set; }

Domyślnie EF utworzy kaskadowe usuwanie z Notification do AspNetUsers, których nie chcę - więc mam to również w mojej klasie Context

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

Pamiętaj tylko, że definicja AspNetUSers jest rozszerzona w klasie ApplicationUser wewnątrz IdentityModels.cs, która jest generowana dla Ciebie przez rusztowanie Visual Studios. Następnie potraktuj ją jak każdą inną klasę/tabelę w swojej aplikacji

AKTUALIZACJA - oto przykłady pełnych modeli

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak generować wykresy i wykresy z bazy danych mysql w php

  2. Laravel ma wiele i należy do parametrów

  3. Łączenie się ze zdalnym my Sql pokazuje mi odmowę dostępu dla użytkownika [zabezpieczony e-mail] ( przy użyciu hasła :tak )

  4. przygotowana instrukcja, w której wartość jest w tablicy

  5. MySQL:nie można nadać nazw tabelom w przypadku Upper Camel (przypadek Pascala)