Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hubungan satu ke banyak antara AspNetUsers (Identitas) dan tabel khusus

Saya telah melakukan ini pada sejumlah proyek

Misalnya saya memiliki hubungan satu ke banyak dari ASPNetUsers ke Notifications. Jadi di kelas ApplicationUser saya di dalam IdentityModels.cs saya punya

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

Kelas Notifikasi saya memiliki kebalikannya

public virtual ApplicationUser ApplicationUser { get; set; }

Secara default EF kemudian akan membuat penghapusan kaskade dari Notification ke AspNetUsers yang tidak saya inginkan - jadi saya juga memiliki ini di kelas Konteks saya

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

Ingat saja definisi untuk AspNetUSers diperluas di kelas ApplicationUser di dalam IdentityModels.cs yang dibuat untuk Anda oleh scaffolding studio visual. Kemudian perlakukan seperti kelas/tabel lain di aplikasi Anda

UPDATE - berikut adalah contoh model lengkap

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. Bisakah dua perangkat yang berbeda memiliki ID Pendaftaran GCM yang sama?

  2. Apa konvensi penamaan yang tepat untuk FK MySQL?

  3. Bagaimana Operator SUARA SEPERTI Bekerja di MySQL

  4. Kesalahan kueri Python/MySQL:`Kolom tidak dikenal`

  5. SQL - Bagaimana cara mengubah posisi?