Pregunta Relación uno a muchos entre AspNetUsers (Identity) y una tabla personalizada


Estoy desesperado por crear una relación Uno a Muchos entre la tabla AspNetUsers de Identity 2.0 y una tabla personalizada llamada Map (un usuario puede tener muchos mapas, pero un mapa solo puede tener un usuario). He intentado principalmente todas las soluciones disponibles en este sitio web y también perdió muchos días probando otras soluciones encontradas en la web. Estoy atascado. Nada parece funcionar para mí. Soy nuevo en MVC y EF, así que básicamente creo que necesito algún tipo de guía paso a paso. ¿Alguien puede ser muy amable al proporcionarme una guía para novatos para lograr esto a partir de un nuevo proyecto MVC5 hecho. Gracias y perdón por la pregunta de redundad que hice.

PD. Puedo y puedo crear todas las clases de relaciones entre dos tablas personalizadas, pero no entre AspNetUsers y mi tabla de mapas. Muchas gracias de antemano


8
2018-04-22 09:55


origen


Respuestas:


He hecho exactamente esto en una serie de proyectos

Por ejemplo, tengo una relación de uno a muchos desde ASPNetUsers a Notificaciones. Entonces, en mi clase ApplicationUser dentro de IdentityModels.cs tengo

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

Mi clase de Notificaciones tiene el reverso

public virtual ApplicationUser ApplicationUser { get; set; }

Por defecto, EF creará una eliminación en cascada de Notification to AspNetUsers que no quiero, así que también tengo esto en mi clase Context

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

Solo recuerde que la definición de AspNetUSers se extiende en la clase ApplicationUser dentro de IdentityModels.cs que generan los andamios de los estudios visuales. Luego, trátalo como cualquier otra clase / tabla en tu aplicación

ACTUALIZACIÓN - aquí hay ejemplos de modelos completos

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; }

}

}


9
2018-04-24 13:37



http://www.itorian.com/2013/11/customizing-users-profile-to-add-new.html

esta publicación contiene tu respuesta


0
2018-04-22 11:07



Aquí hay una solución paso a paso con imágenes (usa herencia):

https://practiceaspnet.wordpress.com/2015/04/03/adding-asp-net-identity-to-an-existing-entity-framework-asp-net-web-forms-application/


0
2018-04-22 12:07