J'ai fait exactement cela sur un certain nombre de projets
Par exemple, j'ai une relation un à plusieurs entre ASPNetUsers et Notifications. Donc, dans ma classe ApplicationUser à l'intérieur de IdentityModels.cs, j'ai
public virtual ICollection<Notification> Notifications { get; set; }
Ma classe Notifications a l'inverse
public virtual ApplicationUser ApplicationUser { get; set; }
Par défaut, EF créera alors une suppression en cascade de Notification à AspNetUsers, ce que je ne veux pas - donc j'ai aussi ceci dans ma classe Context
modelBuilder.Entity<Notification>()
.HasRequired(n => n.ApplicationUser)
.WithMany(a => a.Notifications)
.HasForeignKey(n => n.ApplicationUserId)
.WillCascadeOnDelete(false);
N'oubliez pas que la définition de AspNetUSers est étendue dans la classe ApplicationUser à l'intérieur de IdentityModels.cs qui est générée pour vous par l'échafaudage Visual Studios. Ensuite, traitez-le comme n'importe quelle autre classe/table de votre application
MISE À JOUR - voici des exemples de modèles complets
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; }
}
}